[英]Win32 C++ Subclassed label not receiving WM_PAINT after calling WM_SETTEXT
在子类控件上调用WM_SETTEXT后,它没有收到WM_PAINT是正常行为吗?
父级确实收到WM_CTLCOLOR,但我想在子类WM_PAINT消息中绘制所有内容。
我假设调用WM_SETTEXT之后调用InvalidateRect是可行的方法?
如果您想查看代码,请告诉我。 我觉得对于这个问题没有必要,这就是为什么我一开始就忽略了它。
是否发送WM_PAINT来响应WM_SETTEXT取决于已子类化了哪个窗口类,例如使按钮无效,但列表框无效(列表框的窗口文本仅是调试辅助工具,因为未在其中显示)。 UI)。
如果您的类使得设置文本无效,则可以始终在子类的WindowProc中添加以下内容:
case WM_SETTEXT: {
LRESULT res = CallWindowProc(lpfnParent, hWnd, WM_SETTEXT, wParam, lParam);
InvalidateRect(hWnd, nullptr, true);
return res;
}
这样,您每次设置控件文本时都不需要InvalidateRect。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.