如何设置按钮的背景颜色,包括复选框按钮
How Do I Set the Background Color of buttons including a Checkbox button?
如何设置按钮的背景颜色,包括复选框按钮?
我今天努力找到答案 - 认为回答这个问题应该很简单,但是我偶然发现的信息毫无用处,因此有可能在那里复制东西,但我找不到,但我找不到,但我找不到,但我找不到,但我找不到,但我找不到,但我找不到,但我找不到,但是我将把这个Quick'n'n'dirty方法...
所有'按钮'类窗口将 WM_CTLCOLORSTATIC
发送到其父窗口,然后可以调用 ::SetBkColor((HDC)wParam, rgbBkColor)
,然后返回该颜色的刷子。
如果这全部使用了系统颜色,则不需要管理刷子,您可以简单地要求::GetSysColor(sysIndex)
,然后返回返回的刷子的::GetSysColorBrush(sysIndex)
。
如果您使用的是自定义颜色,则需要创建自己的刷子并为此管理手柄。
根据Windows Standard Message框,我需要此代码来更换消息框,该消息框更换使用白色背景,并使用灰色背景的下部使用灰色背景。因此,我的静态控制(图标(需要是白色的,而我的其他按钮(包括"不再要求"复选框(需要具有灰色背景(复选框通常具有白色背景(。
因此,我处理wm_erasebkgnd正确绘制背景的两部分,然后处理WM_CLTLCOLORORSTATATIC,以确保所有按钮都正确地"透明",以便它们出现在其上的背景。就我而言,我对图标使用了一个"静态"控件,该控件以灰色为灰色,几个按钮以及一个复选框按钮 - 复选框按钮总是以白色绘制其背景,因此两者都需要一个使固定。
我的示例是使用MFC,但希望您可以为您的目的进行琐碎的翻译:
// add to the message map:
ON_MESSAGE(WM_CTLCOLORSTATIC, OnCtlColorStatic)
// create the implementation:
LRESULT CRTFMessageBox::OnCtlColorStatic(WPARAM wParam, LPARAM lParam)
{
// buttons and static controls (icon) send WM_CTLCOLORSTATIC, so we can force them to use the correct background color here...
const HDC hdc = (HDC)wParam;
const int idc = ::GetDlgCtrlID((HWND)lParam);
// choose a system color or brush based on if this is icon (static) or another control (a button)
const int idx = idc == IDC_STATIC ? COLOR_WINDOW : COLOR_3DFACE;
// select system color
::SetBkColor(hdc, GetSysColor(idx));
// return system brush (which we don't need to delete!)
return (LRESULT)GetSysColorBrush(idx);
}
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 问:如何使用C++中的按钮从窗口打开窗口
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何在内核C++中使用1920x1080x16M图形或类似的16M颜色?(VGA)
- QML按钮点击功能执行顺序
- 更改 QT 中按钮的颜色
- 颜色为C++的单选按钮
- 使用winapi使用按钮更改窗口的背景颜色
- 当鼠标越过按钮时,我可以更改按钮背景颜色吗?
- 如何设置按钮的背景颜色,包括复选框按钮
- Qt 样式表按钮背景颜色
- 如何阻止Qt的setStyleSheet重置表单和按钮上的指定颜色?
- 单击按钮后对QML矩形的颜色设置动画
- 在不声明成员变量的情况下更改按钮颜色
- 如何获取指向颜色按钮的指针
- 如何更改QDockWidget浮动按钮的颜色
- 如何使用QSS为禁用按钮设置不同的背景颜色
- 为什么在CToolBar中使用高深度颜色的禁用按钮只是灰色框
- 如何获取标题栏窗口控件的 RECT(最大化、最小化、关闭按钮)?我尝试制作自定义颜色标题栏
- 更改 Windows 上的任务栏按钮颜色