【发布时间】:2011-05-04 15:55:51
【问题描述】:
如何更改使用CreateWindow 创建的按钮控件的背景颜色?
【问题讨论】:
标签: windows winapi visual-c++
如何更改使用CreateWindow 创建的按钮控件的背景颜色?
【问题讨论】:
标签: windows winapi visual-c++
Windows API 不再提供许多选项来自定义标准控件的外观。
WM_CTLCOLORBTN 可以由按钮的父窗口处理以控制按钮外观的某些方面,但 uxtheme 按钮仅使用背景画笔绘制按钮后面的区域。人脸的外观由当前主题决定。
WM_DRAWITEM 也可以由父窗口处理,方法是在按钮上设置BS_OWNERDRAW 样式。这使得父窗口可以完全替代普通的按钮绘制逻辑。
【讨论】:
要管理对话框上控件的颜色,请将处理程序添加到对话框类中的 WM_CTLCOLOR 消息中。
然后你必须添加几行这样的:
HBRUSH CYourDialogClass::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd->GetDlgCtrlID() == IDC_OF_YOUR_BUTTON)
{
pDC->SetBkColor (RGB(0, 0, 255)); // BLUE color for background
pDC->SetTextColor (RGB(255, 0, 0)); // RED color for text
}
return hbr;
}
【讨论】: