Joh*_*nic 5 c++ winapi textcolor
我有一个静态控件:
HWND hLabelControl=CreateWindowEx(WS_EX_CLIENTEDGE,"STATIC","",
WS_TABSTOP|WS_VISIBLE|WS_CHILD|SS_CENTER,0,0,24,24,
hwnd,(HMENU)hS1,GetModuleHandle(NULL),NULL);
Run Code Online (Sandbox Code Playgroud)
我想按下按钮时静态标签中文本的颜色变为红色.
我怎样才能做到这一点?
我知道有一个
SetTextColor(
_In_ HDC hdc,
_In_ COLORREF crColor
);
Run Code Online (Sandbox Code Playgroud)
功能,但我无法弄清楚如何获得静态控制的HDC.
提前致谢.
编辑:
这不起作用:
HDC hDC=GetDC(hLabelControl);
SetTextColor(hDC,RGB(255,0,0));
Run Code Online (Sandbox Code Playgroud)
静态控件WM_CTLCOLORSTATIC在绘制自己之前就向其父级发送消息.您可以通过处理此消息来更改DC.
case WM_CTLCOLORSTATIC:
if (the_button_was_clicked) {
HDC hdc = reinterpret_cast<HDC>(wParam);
SetTextColor(hdc, COLORREF(0xFF, 0x00, 0x00));
}
return ::GetSysColorBrush(COLOR_WINDOW); // example color, adjust for your circumstance
Run Code Online (Sandbox Code Playgroud)
因此,诀窍是在单击按钮时让静态控件重新绘制.您可以通过几种不同的方式执行此操作,但最简单的方法可能是使窗口无效InvalidateRect.