我在收到WM_CTLCOLORSTATIC
时尝试更改文字颜色。
LRESULT ProcessWindowMessage(_In_ HWND hWnd, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
{
switch (uMsg)
{
case WM_CTLCOLORSTATIC:
::SetTextColor((HDC)wParam, RGB(m_color.red, m_color.green, m_color.blue));
::SetBkMode((HDC)wParam, TRANSPARENT);
return (LRESULT)GetStockObject(DKGRAY_BRUSH);
}
return m_orgWndProc(hWnd, uMsg, wParam, lParam);
}
正如您所看到的,“只是一个测试”的颜色。改变了,但随之而来的是整个盒子的背景也发生了变化。
我尝试过几乎所有GetStockObject()
组合,包括
return (LRESULT)GetStockObject(COLOR_BACKGROUND + number)
&安培;
GetCurrentObject((HDC)wparam,OBJ_BRUSH)
我要说的是,这些命令以某种方式操纵了背景的颜色,但从未与过去的默认灰度值相匹配。
我在这里缺少什么?