Я создал диалоговую форму для класса MFC, отредактировав файл .rc с помощью дизайнера форм следующим образом:
Он принимается как 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 . Я новичок в программировании окон.
Может ли кто-нибудь помочь мне, как подкласс, как указано выше?