我在一个黑色的窗口上有一些静态文本,我想在运行时使用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));
}
我可能完全没有接近这个问题,所以任何帮助都会非常感激!
答案 0 :(得分:4)
您与WM_CTLCOLORSTATIC
走在正确的轨道上。如果要更改颜色,则使控件无效(可能使用RedrawWindow
)。这将导致它重新粉刷。重新绘制时,将再次调用WM_CTLCOLORSTATIC
处理程序。
答案 1 :(得分:0)
一些建议:
您是否知道它是接收WM_CTLCOLORSTATIC
的父对话,而不是控件本身?
return (BOOL)...
看起来很奇怪 - 这个代码在哪个函数中存在?你应该从你的窗口过程中返回一个LRESULT。
你每次都在刷一个刷子 - 你应该保持一个刷子并每次都返回刷子。 Windows不会清理画笔。