在Win32中,如何更改STATIC文本的颜色?

时间:2013-01-31 16:40:57

标签: winapi

我在一个黑色的窗口上有一些静态文本,我想在运行时使用Color Chooser对话框更改它。我已成功获得颜色,现在我只需更改文字!我已经读过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));
}

我可能完全没有接近这个问题,所以任何帮助都会非常感激!

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

一些建议:

  • 您是否知道它是接收WM_CTLCOLORSTATIC的父对话,而不是控件本身?

  • return (BOOL)...看起来很奇怪 - 这个代码在哪个函数中存在?你应该从你的窗口过程中返回一个LRESULT。

  • 你每次都在刷一个刷子 - 你应该保持一个刷子并每次都返回刷子。 Windows不会清理画笔。