C++中如何调用WMLCTLCOLLIFTION消息实现LTEXT控件
我使用表单设计器编辑.rc文件,创建了MFC类的对话框表单,如下所示:, 它被视为LTEXT。我想使用WM_CTLCOLORSTATIC消息更改该文本的颜色。 我使用的子类如下所示C++中如何调用WMLCTLCOLLIFTION消息实现LTEXT控件,c++,visual-studio,winapi,C++,Visual Studio,Winapi,我使用表单设计器编辑.rc文件,创建了MFC类的对话框表单,如下所示:, 它被视为LTEXT。我想使用WM_CTLCOLORSTATIC消息更改该文本的颜色。 我使用的子类如下所示 HWND name_message = ::GetDlgItem(hwnd_, IDC_EDIT_OUTPUT_STRING); g_EditTxtViewWndProc = (WNDPROC)(LONG_PTR)GetWindowLongPtr(name_message, GWLP_WNDPROC); SetWi
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是正确的。您需要使用父级的wndproc来处理此消息 您还可以直接使用CWnd::OnCtlColor。大多数控件将此消息发送给其父控件,通常是一个对话框,用于准备pDC以使用正确的颜色绘制控件 有关更多信息,请参阅以下文档 致以最良好的祝愿, Baron BiWM_CTLCOLORSTATIC发送给控件的父控件,而不是控件本身。因此父级的wndproc需要处理它,而不是控件的wndproc。文件中明确说明了这一点。