调用函数CWinApp::SetDialogBkColor可以改变对话框的背景颜色和文本颜色。函数原型如下:void SetDialogBkColor(COLORREF clrCtlBk = RGB(192,192,192),COLORREF clrCtlText = RGB(0,0,0));其中参数clrCtlBk设置对话框的背景颜色,默认为灰色。参数clrCtlText设置对话框的文本颜色,默认为黑色。一般在应用程序类的InitInstance函数中调用SetDialogBkColor函数,设置应用程序中对话框与消息对话框的默认背景颜色和文本颜色。举例如下:BOOL CMyApp::InitInstance()
{
//将对话框背景颜色设置为红色,将文本颜色设置为黄色
SetDialogBkColor(RGB(255,0,0),RGB(255,255,0));
//装入标准的INI文件设置(包括MRU)
LoadStdProfileSettings();
//...
}
{
//将对话框背景颜色设置为红色,将文本颜色设置为黄色
SetDialogBkColor(RGB(255,0,0),RGB(255,255,0));
//装入标准的INI文件设置(包括MRU)
LoadStdProfileSettings();
//...
}
1、在aPP中,InitApp中加入SetDialogBkColor,可以改变该程序的所有对话框的背景色。
2、在对话框框的ONCtrlColor中,
HBRUSH xxx::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
//HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
switch(nCtlColor)
{
case CTLCOLOR_SCROLLBAR: //滚动条
pDC->SetBkColor(BKCOLOR); //设置滚动的条的背景颜色
pDC->SetTextColor(BKCOLOR); //设置滚动的条的前景颜色
return m_brush;
case CTLCOLOR_STATIC: //静态文本
pDC->SetBkColor(BKCOLOR); //设置静态文本背景色
// pDC->SetTextColor(RGB(0, 0, 0)); //设置静态文本前景色
return m_brush;
}
return m_brush; //对话框背景色
}m_brush在Onintdlg中创建。
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr;
if (nCtlColor == CTLCOLOR_DLG) hbr = ::CreateSolidBrush(RGB(0,255,0));
else hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
// TODO: Return a different brush if the default is not desired
return hbr;
}