gpt4 book ai didi

c++ - 为什么 SetTextColor 也会改变整个 StaticEdtBox 的背景

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:49:25 26 4
gpt4 key购买 nike

每当收到 WM_CTLCOLORSTATIC 时,我都在尝试更改文本颜色。

enter image description here

 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);
}

如您所见,'Just a test' 的颜色发生了变化,但随之而来的是,整个框的背景也发生了变化。

我已经尝试返回几乎所有 GetStockObject() 组合,包括

返回 (LRESULT)GetStockObject(COLOR_BACKGROUND + number)

&

GetCurrentObject((HDC)wparam,OBJ_BRUSH)

我不得不说,这些命令以某种方式操纵了背景的颜色,但从未与过去的默认灰度值相匹配。

我在这里错过了什么?

最佳答案

你没试过

return (LRESULT)GetStockObject(NULL_BRUSH);

正如 Mark Ransom 评论的那样,如果您设置新文本,则不会删除背景。

你应该使用:

return (LRESULT)GetSysColorBrush(CTLCOLOR_DLG);

如前所述。

关于c++ - 为什么 SetTextColor 也会改变整个 StaticEdtBox 的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31828379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com