gpt4 book ai didi

c++ - 如何在 C++ 中为 LTEXT 控件调用 WM_CTLCOLORSTATIC 消息

转载 作者:行者123 更新时间:2023-11-28 04:30:19 29 4
gpt4 key购买 nike

我通过使用窗体设计器编辑 .rc 文件为 MFC 类创建了对话框窗体,如下所示, enter image description here

它被视为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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com