鸡啄米正正在上一节中为大家解说了字体对话框 的运用方法,熟习了字体对话框,本节继续讲另一种通用对话框--颜色对话框。

       颜色对话框大家肯定也不陌生,银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站可以打开它选择需要的颜色,简单说,它的作用就是用来选择颜色。MFC中提供了CColorDialog类封装了颜色对话框的所有操作,银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站可以通过它显现颜色对话框,并获取颜色对话框中选择的颜色。颜色对话框跟字体对话框往往,也是一种模态对话框

       CColorDialog类的构制函数

CColorDialog(
   COLORREF clrInit = 0,
   DWORD dwFlags = 0,
   CWnd* pParentWnd = NULL
);

        参数说明:

        clrInit:默认选择颜色的颜色值,样板为COLORREF,执行上就是unsigned long样板。如果没有设置它的值,则默以为RGB(0,0,0),即玄色。

       注:RGB(r,g,b)是,可以打算颜色值。括号中的三个值分别为红、绿、蓝分量的值。

       dwFlags:自定义颜色对话框功能和外观的属性值。详情可正正在MSDN中查阅。

       pParentWnd:颜色对话框的父窗口的指针。

       获取颜色对话框中所选颜色值

        银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站运用颜色对话框的最终目的还是要获得正正在颜色对话框中选择的颜色值。为此CColorDialog类的成员函数GetColor()可以很好的实现银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站的要求。GetColor()函数的原型为:

        COLORREF GetColor( ) const;

        它返回所选颜色的COLORREF值。

       如果银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站想获得R、G、B各分量的值呢?可以依据GetColor得到的COLORREF颜色值,通过运用GetRValue、GetGValue和GetBValue三个宏获得。GetRValue的语法时局务署为:

        BYTE GetRValue(DWORD rgb);

        参数rgb就是COLORREF颜色值,返回值即是R分量值。其他两个宏的时局务署与之雷同。例如,GetColor()函数返回的COLORREF为10000,则R分量值就是GetRValue(10000)。

       颜色对话框运用实例

       鸡啄米下面给大家做一个颜色对话框的小例子。此例要实现的功能简单先容下:天生一个对话框,对话框中陈设一个“颜色选择”按钮,四个静态文本框和四个编辑框。四个静态文本框分别显现Color:、R:、G:、B:,每个静态文本框后面跟一个编辑框,分别用来显现颜色对话框中选择的颜色值和所选颜色值的红色分量、绿色分量、蓝色分量。

       以下是实例创建的步骤:

        1.创建一个基于对话框的MFC工程,名字为“Example19”。

       2.正正在自动天生的主对话框IDD_EXAMPLE19_DIALOG的模板中,删除“TODO: Place dialog controls here.”静态文本框,添加一个按钮,ID设为IDC_COLOR_BUTTON,Caption设为“颜色选择”,用于显现颜色对话框来选择颜色。再添加四个静态文本框,ID分别为IDC_COLOR_STATIC、IDC_R_STATIC、IDC_G_STATIC、IDC_B_STATIC,Caption分别设为“Color:”、“R:”、“G:”、“B:”,然后每个静态文本框后添加一个编辑框,四个编辑框的ID分别为IDC_COLOR_EDIT、IDC_R_EDIT、IDC_G_EDIT、IDC_B_EDIT,分别用来显现颜色对话框中选择的颜色值和所选颜色值的红色分量、绿色分量、蓝色分量。

       3.为按钮IDC_COLOR_BUTTON添加点击消歇的消歇治理函数CExample19Dlg::OnBnClickedColorButton()。

       4.修改消歇治理函数 CExample19Dlg::OnBnClickedColorButton()如下:

C++代码
  1. void CExample19Dlg::OnBnClickedColorButton()   
  2. {   
  3.     // TODO: Add your control notification handler code here   
  4.     COLORREF color = RGB(255, 0, 0);      // 颜色对话框的初始颜色为红色  
  5.     CColorDialog colorDlg(color);         // 构制颜色对话框,传入初始颜色值   
  6.   
  7.     if (IDOK == colorDlg.DoModal())       // 显现颜色对话框,并坚决是否点击了“确定”   
  8.     {   
  9.         color = colorDlg.GetColor();      // 获取颜色对话框中选择的颜色值   
  10.         SetDlgItemInt(IDC_COLOR_EDIT, color);         // 正正在Color编辑框中显现所选颜色值   
  11.         SetDlgItemInt(IDC_R_EDIT, GetRValue(color));  // 正正在R编辑框中显现所选颜色的R分量值   
  12.         SetDlgItemInt(IDC_G_EDIT, GetGValue(color));  // 正正在G编辑框中显现所选颜色的G分量值   
  13.         SetDlgItemInt(IDC_B_EDIT, GetBValue(color));  // 正正在B编辑框中显现所选颜色的B分量值   
  14.     }   
  15. }  

        5.着末编译运行程序,正正在结果对话框中点击“颜色选择”按钮,弹出颜色对话框。初始状态下,选择框正正在红色上,银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站选另一种颜色,此时的颜色对话框如下:

        点“确定”,主对话框上的四个编辑框中分别显现了选择的颜色值、R分量、G分量和B分量:

        银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站正正在执行开发中,可以用获取到的颜色值来设置其他对象的颜色,运用还是很便当的。

       关于颜色对话框就讲到这里了。其实种种对话框的运用都有很众相同之处,相信大家越来越熟习了。着末还是欢迎大家继续体贴鸡啄米的VS2010/MFC初学教程。

除非特别注明,鸡啄米文章均为原创
转载请标明本文地址:http://www.sygjbus.cn/software/177.html
2012年5月17日
作家:鸡啄米 分类:软件开发 浏览: 评论:16