调用WM_SETTEXT后,Win32 C 子分类标签未接收WM_PAINT

Win32 C++ Subclassed label not receiving WM_PAINT after calling WM_SETTEXT

本文关键字:WM 标签 PAINT 分类 SETTEXT Win32 调用      更新时间:2023-10-16

在呼叫wm_settext之后,子分类控件未接收wm_paint是正常行为吗?

父母确实会收到wm_ctlcolor,但我想在我的子分类的wm_paint消息中绘画。

我假设致电WM_SETTEXT后打电话给Invalidaterect?

让我知道您是否想查看代码。我觉得这个问题不是必需的,这就是为什么我最初将其遗漏了。

是否以WM_SetText的响应发送WM_PAINT取决于已属于哪个窗口类,例如,按钮是无效的,但列表框并非不仅仅是在UI中显示的调试援助)。

如果您的班级为了设置文本无效,您可以随时将类似以下内容添加到子类的WindowProc:

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

这样,每次设置控制文本时,都不需要无效。