作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我通过使用窗体设计器编辑 .rc 文件为 MFC 类创建了对话框窗体,如下所示,
它被视为LTEXT。我想使用 WM_CTLCOLORSTATIC 消息 更改该文本的颜色。我使用子类如下,
HWND name_message = ::GetDlgItem(hwnd_, IDC_EDIT_OUTPUT_STRING);
g_EditTxtViewWndProc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(name_message, GWLP_WNDPROC);
SetWindowLongPtr(name_message, GWLP_WNDPROC, (LONG_PTR)(EditTxtViewProc));
LRESULT CALLBACK
EditTxtViewProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
static HBRUSH hBrush = CreateSolidBrush(RGB(255, 0, 0));
switch( msg )
{
case WM_CTLCOLORSTATIC:
{
HDC hdC = (HDC)wp;
SetTextColor(hdC, RGB(255, 0, 0));
SetBkColor(hdC, RGB(255, 255, 255));
return (INT_PTR)hBrush;
}
}
}
在上述情况下,它不会调用WM_CTLCOLORSTATIC 消息。我是窗口编程的初学者。
谁能帮我知道如何像上面那样子类化?
最佳答案
Remy Lebeau's comment是正确的。您需要在父级 的窗口过程中处理此消息。
在MFC中,也可以直接使用CWnd::OnCtlColor。大多数控件将此消息发送给它们的父级(通常是一个对话框)以准备 pDC 使用正确的颜色绘制控件。
有关详细信息,请参阅 MSDN:https://learn.microsoft.com/en-us/cpp/mfc/reference/cwnd-class#onctlcolor
关于c++ - 如何在 C++ 中为 LTEXT 控件调用 WM_CTLCOLORSTATIC 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53124475/
我通过使用窗体设计器编辑 .rc 文件为 MFC 类创建了对话框窗体,如下所示, 它被视为LTEXT。我想使用 WM_CTLCOLORSTATIC 消息 更改该文本的颜色。我使用子类如下, HWND
我是一名优秀的程序员,十分优秀!