VC 对话框背景颜色
步骤①、②同上方法三中的步骤①、②。
步骤③:利用ClassWizard重载OnCtlColor(…)(即WM_CTLCOLOR消息)时则有些不同:
[cpp]view plaincopy
1.HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
[cpp]view plaincopy
1.BOOL CExampleDlgDlg::OnInitDialog()
2.{
3....
4.// TODO: Add extra initialization here
5.m_brush.CreateSolidBrush(RGB(0, 255, 0));//生成一绿色刷子
11.hbr=(HBRUSH)m_brush;
12.}
13.if(nCtlColor==CTLCOLOR_EDIT)//文本编辑框颜色
14.{
15.pDC->SetTextColor(RGB(0,0,255));
16.//pDC->SetBkColor(RGB(191,219,255)); //静态控件的背景颜色设置
7.{
8.pDC->SetTextColor(RGB(255,0,0));
9.pDC->SetBkColor(RGB(191,219,255));//静态控件的背景颜色设置,这里设置于背景颜色一致,则可以免设置透明
10.//pDC->SetBkMode(TRANSPARENT); //模式设置透明的话,则忽略静态控件的背景颜色设置,与对话框颜色融合
6....
7.}
③利用ClassWizard重载OnCtlColor(…),即WM_CTLCOLOR消息:
[cpp]view plaincopy
1.HBRUSH CExampleDlgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
2.{
3./*
CTLCOLOR_MSGBOX消息框
CTLCOLOR_SCROLLBAR滑动条
CTLCOLOR_STATIC静态文本框、矩形等。
17.pDC->SetBkMode(TRANSPARENT);
18.hbr=(HBRUSH)m_brush;
19.}
20.retuห้องสมุดไป่ตู้n hbr;
21.}
效果如下:
对于其中nCtlColor类型,即它的取值:
CTLCOLOR_DLG对话框
CTLCOLOR_EDIT编辑框
CTLCOLOR_LISTBOX列表框
VC对话框背景颜色
①在CExampleDlgDlg的头文件中,添加一个CBrush的成员变量:
[cpp]view plaincopy
1.class CExampleDlgDlg : public CDialog
2.{...
3.protected:
4.CBrush m_brush;
5....
6.};
②在OnInitDialog()函数中添加如下代码:
2.{
3.HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
4.if(nCtlColor ==CTLCOLOR_DLG)//对话框颜色
5.return m_brush;//返加绿色刷子
6.if(nCtlColor==CTLCOLOR_STATIC && pWnd->GetDlgCtrlID()==IDC_STATIC)//静态文本颜色,并且指定控件ID号
4.**这里不必编写任何代码!
5.**下行代码要注释掉
6.** HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
7.*/
8.return m_brush;//返加绿色刷子
9.}
VC
对于分布在对话框上的控件,我们可以修改其颜色、其背景颜色,比如对静态文本、文本编辑框、列表框等等。