Win32下如何改变STATIC文本的颜色?

BWH*_*zel 2 winapi

我在一个黑色的窗口上有一些静态文本,我想在运行时使用颜色选择器对话框更改它。我已经成功获取了颜色,现在我只需要更改文本即可!我已经读过该WM_CTLCOLORSTATIC消息是要处理的消息,尽管这似乎仅适用于最初将控件绘制到屏幕上的情况。能否WM_PAINT使用?

到目前为止,我设置颜色的代码是(WM_CTLCOLORSTATIC以防万一):

if ((HWND)lParam == GetDlgItem(hWnd, uLabelId)
{
    SetBkMode((HDC)wParam, TRANSPARENT);
    SetTextColor((HDC)wParam, crLabelTextColour);
    return (BOOL)CreateSolidBrush(GetSysColor(COLOR_MENU));
}
Run Code Online (Sandbox Code Playgroud)

在处理这个问题时,我可能完全搞错了,所以任何帮助都将不胜感激!

Adr*_*thy 5

你在正确的轨道上WM_CTLCOLORSTATIC。如果要更改颜色,则使控件无效(可能通过使用RedrawWindow)。这将导致它被重新粉刷。当它被重新绘制时,您的WM_CTLCOLORSTATIC处理程序将再次被调用。