Win32 C ++ Subclassed标签在调用WM_SETTEXT后未接收WM_PAINT

问题描述 投票:0回答:1

在您调用WM_SETTEXT后,子类控件是否接收WM_PAINT是否是正常行为?

父确实接收WM_CTLCOLOR,但我想在我的子类WM_PAINT消息中绘制所有内容。

我假设在调用WM_SETTEXT之后调用InvalidateRect是要走的路?

如果您想查看代码,请告诉我。我觉得这个问题没有必要,这就是我最初离开它的原因。

c++ winapi paint subclassing
1个回答
1
投票

是否响应WM_SETTEXT发送WM_PAINT取决于已被子类化的窗口类,例如按钮无效但列表框不是(列表框的窗口文本只是调试辅助,因为它没有显示在用户界面)。

如果你的类是这样设置文本应该无效你可以总是添加类似下面的东西到你的子类'WindowProc:

case WM_SETTEXT: {
  LRESULT res = CallWindowProc(lpfnParent, hWnd, WM_SETTEXT, wParam, lParam);
  InvalidateRect(hWnd, nullptr, true);
  return res;
}

这样,每次设置控件文本时都不需要InvalidateRect。

© www.soinside.com 2019 - 2024. All rights reserved.