繁体   English   中英

调用WM_SETTEXT后,Win32 C ++子类化标签未收到WM_PAINT

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM