【问题标题】:Win32 custom control with child controls带有子控件的 Win32 自定义控件
【发布时间】:2012-07-27 13:32:35
【问题描述】:

我创建了一个包含子控件的自定义容器控件(所有者绘制等)。 不幸的是,这些子控件永远不会更新(它们不会收到 WM_PAINT)

您知道问题出在哪里吗? 创建窗口

    hwnd = CreateWindowEx(
             WS_EX_CONTROLPARENT  , 
             _T("PopupControl"),
             _T("Popup Control"),
              WS_OVERLAPPED | WS_CLIPCHILDREN|WS_CLIPSIBLINGS,
             100,100,420,220  ,
             NULL,
             NULL, GetModuleHandle(0), NULL
           );

创建子控件

CreateWindowEx(0, L"button", TEXT("Type here"),
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 
200,15,100,20, 
hwnd, NULL, GetModuleHandle(0), NULL);

感谢和问候,

【问题讨论】:

  • 显示容器和子元素的样式、styleEx 和类样式。
  • 这不应该编译,GetModuleHandle() 返回错误的句柄类型。不要乱用 STRICT。
  • 你建议用什么来代替 GetModuleHandle() ?
  • @AP:该参数是可选的,你可以在那里传递NULL。

标签: c++ winapi win32gui


【解决方案1】:

WS_CLIPCHILDREN|WS_CLIPSIBLINGS 样式添加到容器控件。

【讨论】:

  • 感谢您的建议,不幸的是问题仍然存在。
  • 您创建“按钮”?你为什么认为,他们没有收到 WM_PAINT?你重写了类过程???
  • 使用 Spy++ 我可以看到他们收到了消息,但没有收到 WM_PAINT。
  • 其实有很多可能的原因。例如,您可以在 WM_PAINT 之前验证它们......没有完整的代码不能说更多
猜你喜欢
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2014-06-11
  • 2012-11-19
相关资源
最近更新 更多