网上流传的方法是在应用程序类的InitInstance()函数中添加:
//设置对话框背景和文本颜色
SetDialogBkColor(RGB(160,180,220),RGB(0,0,0));
但是SetDialogBkColor中VS 2003中已经不支持了,只有在VC中支持。
在VS中的办法就是响应WM_CTLCOLOR消息,在消息映射函数中添加:
HBRUSH BroadcastCorrectionsPage::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何属性
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
switch(nCtlColor)
{
case CTLCOLOR_STATIC:
// pDC->SetBkMode(TRANSPARENT);经测试,这句没起作用,还是直接把背景颜色改为白色
pDC->SetBkColor(RGB(255,255,255));
pDC->SetTextColor(RGB(0,0,0));
break;
case CTLCOLOR_DLG :
return m_hbrush;
break;
default:
break;
}
return hbr;
}
其中m_hbrush是在头文件中声明的HBrush变量:
HBRUSH m_hbrush;
OnInitDialog()函数中定义:
m_hbrush=CreateSolidBrush(RGB(255,255,255));
参考:【1】http://www.cnblogs.com/clever101/archive/2009/05/24/1488441.html
本文介绍了在Visual Studio中通过响应WM_CTLCOLOR消息来定制对话框背景颜色和文本颜色的方法,包括声明HBrush变量、初始化背景颜色,并在消息映射函数中进行设置。
1149

被折叠的 条评论
为什么被折叠?



