6.7.3 使用"颜色"对话框设置文本背景颜色
"颜色"对话框也是常用的对话框之一,用户可以直观地在对话框中选择所需要的颜色,也可以创建自定义颜色。CColorDialog类对"颜色"对话框进行了封装,可以通过构造函数CColorDialog构造"颜色"对话框。
语法格式如下:
CColorDialog( COLORREF clrInit = 0, DWORD dwFlags = 0, CWnd* pParentWnd = NULL ); |
clrInit:标识"颜色"对话框默认时的颜色。
dwFlags:一组标记,用于自定义"颜色"对话框。
pParentWnd:标识"颜色"对话框的父窗口。
"颜色"对话框的常用函数如表6.8所示。
表6.8 "颜色"对话框的常用函数
|
函 数< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
功 能 描 述 |
|
DoModal |
用于显示“颜色”对话框,供用户选择颜色 |
|
GetColor |
用于获得用户选择的颜色 |
|
GetSavedCustomColors |
用于返回用户自定义的颜色 |
|
SetCurrentColor |
用于设置当前选择的颜色 |
例6.8 下面使用"颜色"对话框设置静态文本控件中文本的背景颜色。程序设计步骤如下:(实例位置:光盘\TM\sl\6\4)
(1)创建一个基于对话框的应用程序,将对话框的Caption属性修改为"使用'颜色'对话框设置文本背景颜色"。
(2)向对话框中添加一个静态文本控件和一个按钮控件。
(3)在对话框头文件中声明一个COLORREF对象m_Color。
(4)处理"颜色"按钮的单击事件,创建"颜色"对话框,获得选择的颜色。代码如下:
void CColorDialogDlg::OnColor() //"颜色"按钮单击事件处理函数 { CColorDialog dlg(m_Color); //创建"颜色"对话框 if (dlg.DoModal()==IDOK) //判断是否按下"确定"按钮 { m_Color = dlg.GetColor(); //获取用户选择的颜色 Invalidate(); //重绘窗口 } } |
(5)处理对话框的WM_CTLCOLOR事件,在该事件的处理函数中设置静态文本控件显示文本的背景颜色。代码如下:
HBRUSH CColorDialogDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if(nCtlColor == CTLCOLOR_STATIC) //判断是否为静态文本控件 pDC->SetBkColor(m_Color); //设置文本的背景颜色 return hbr; }
|
实例的运行结果如图6.27所示。
|
| 图6.27 使用"颜色"对话框设置文本背景颜色 |
【责任编辑:
夏书 TEL:(010)68476606】