如何更改组合框的背景颜色
答
通常可以创建堆的刷子,例如使用
static HBRUSH hbrush;
...
hbrush = CreateSolidBrush(RGB(255,0,0));
在窗口或对话框过程
然后,处理WM_CTL***
消息并返回刷柄,例如
case WM_CTLCOLORBTN:
case WM_CTLCOLORSTATIC:
case WM_CTLCOLOREDIT:
case WM_CTLCOLORLISTBOX:
{
HDC hdc = (HDC)wParam;
SetTextColor(hdc, RGB(0, 0, 255)); //change text color
SetBkMode(hdc, TRANSPARENT); //change text-background color, or set it to transparent
return (INT_PTR)hbrush;
}
这也适用于ComboBox。如果你想单独处理不同的控制,你可以检查控制手柄lParam
。
对于一个组合框它有点复杂。你必须得到ComboBox的EditBox和ListBox的句柄。你可以使用GetComboBoxInfo
case WM_CTLCOLOREDIT:
case WM_CTLCOLORLISTBOX:
{
HWND hTest = (HWND)lParam;
COMBOBOXINFO ci = { sizeof(COMBOBOXINFO) };
GetComboBoxInfo(hComboBox, &ci);
if (
hTest == ci.hwndItem ||
hTest == ci.hwndList
)
{
HDC hdc = (HDC)wParam;
SetTextColor(hdc, RGB(0, 0, 255));
SetBkMode(hdc, TRANSPARENT);
return (INT_PTR)hbrush;
}
}
我使用了搜索字符串“MSDN C++ combobox background color”。可能的重复[如何设置组合框的背景颜色](https://social.msdn.microsoft.com/Forums/zh-CN/a92cb62b-9a92-4e32-afb9-a9366ba0e1e1/how-to-set-background-color-的编辑,控制和组合框控制?论坛= vclanguage)。互联网是一个了不起的地方,首先搜索。 –
另一种可能性:[SetBkColor函数](https://msdn.microsoft.com/en-us/library/windows/desktop/dd162964%28v=vs.85%29.aspx)。从我以前的搜索另一个选择。 –
你有什么尝试?请使用您尝试过的简单功能编辑您的文章。 –