这里讲述两种改变MFC控件背景颜色的方法:
方法一:用OnCtlColor消息函数,改变特定控件的背景
首先在头文件的类中定义CBush类的变量 brush 如语句:CBrush brush;
然后在源文件的构造函数中初始化:brush.CreateSolidBrush(RGB(255,0,0));
RGB( , , ) 控制颜色,分别为红,绿,蓝,三个一样显示灰色背景,都为255为白色,都为0为黑色
然后再消息函数中写代码如下:
HBRUSH CFilePlayDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何属性
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
if(pWnd->GetDlgCtrlID() == IDC_FILE_PLAY)
{
pDC->SetBkColor(RGB(0,0,0));
HBRUSH brush = CreateSolidBrush(RGB(0,0,0));
return brush;
}
return hbr;
}
方法二:
也用这个消息函数
HBRUSH CFilePlayDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor==CTLCOLOR_STATIC)
{
pDC->SetBkColor(RGB(0,0,0));
HBRUSH b=CreateSolidBrush(RGB(0,0,0));
return b;
}
return hbr;
}
// 这里指定控件类型为静态类型,可以指定为其他类型,如CTLCOLOR_BTN 按钮控件 · CTLCOLOR_DLG 对话框 · CTLCOLOR_EDIT 编辑控件 · CTLCOLOR_LISTBOX 列表框控件 · CTLCOLOR_MSGBOX 消息框 · CTLCOLOR_SCROLLBAR 滚动条控件 · CTLCOLOR_STATIC 静态控件
这个方法省略了定义brush这个变量,直接在函数中用CreateSolidBrush生成一个画刷b,然后返回b。
转载于:https://blog.51cto.com/jackyhuang/533914