带有子控件的 Win32 自定义控件
Posted
技术标签:
【中文标题】带有子控件的 Win32 自定义控件【英文标题】:Win32 custom control with child controls 【发布时间】: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。 【参考方案1】:将WS_CLIPCHILDREN|WS_CLIPSIBLINGS
样式添加到容器控件。
【讨论】:
感谢您的建议,不幸的是问题仍然存在。 您创建“按钮”?你为什么认为,他们没有收到 WM_PAINT?你重写了类过程??? 使用 Spy++ 我可以看到他们收到了消息,但没有收到 WM_PAINT。 其实有很多可能的原因。例如,您可以在 WM_PAINT 之前验证它们......没有完整的代码不能说更多以上是关于带有子控件的 Win32 自定义控件的主要内容,如果未能解决你的问题,请参考以下文章