当前位置:首页 > 前端技术 > VS2010/MFC编程入门之十九(对话框:颜色对话框)

VS2010/MFC编程入门之十九(对话框:颜色对话框)

2022年08月06日 14:38:46前端技术2

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

       颜色对话框大家肯定也不陌生,我们可以打开它选择需要的颜色,简单说,它的作用就是用来选择颜色。MFC中提供了CColorDialog类封装了颜色对话框的所有操作,我们可以通过它显示颜色对话框,并获取颜色对话框中选择的颜色。颜色对话框跟字体对话框一样,也是一种模态对话框

       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:颜色对话框的父窗口的指针。

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

       我们使用颜色对话框的最终目的还是要获得在颜色对话框中选择的颜色值。为此CColorDialog类的成员函数GetColor()能够很好的实现我们的要求。GetColor()函数的原型为:

       COLORREF GetColor( ) const;

       它返回所选颜色的COLORREF值。

       如果我们想获得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.最后编译运行程序,在结果对话框中点击“颜色选择”按钮,弹出颜色对话框。初始状态下,选择框在红色上,我们选另一种颜色,此时的颜色对话框如下:

VS2010/MFC编程入门之十九(对话框:颜色对话框) _ JavaClub全栈架构师技术笔记

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

VS2010/MFC编程入门之十九(对话框:颜色对话框) _ JavaClub全栈架构师技术笔记

       我们在实际开发中,可以用获取到的颜色值来设置其他对象的颜色,使用还是很方便的。

       关于颜色对话框就讲到这里了。其实各种对话框的使用都有很多相似之处,相信大家越来越熟悉了。最后还是欢迎大家继续关注鸡啄米的VS2010/MFC入门教程。

 

转自:http://www.jizhuomi.com/software/181.html

 

作者:gd_沐辰
来源链接:https://www.cnblogs.com/gd-luojialin/p/9649962.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/front/18390.html

标签: 颜色设置
分享给朋友:

“VS2010/MFC编程入门之十九(对话框:颜色对话框)” 的相关文章

qt textbrowser 设置字体颜色

qtextbrowser支持html语法来设置字体。因此使用html语法来设置字体颜色。 但是使用这个方式来设置字体颜色会有Bug。在设置某一部分字体颜色后,有概率导致后续字体颜色,都变成设置的颜色。下面是一种解决方案。 通过宏来控制字体颜色...

Html设置超链接文字颜色

为了突出超链接,超链接文字通常采用与其他文字不同的颜色,超链接文字的下端还会加一条横线。网页的超链接文字有默认颜色,在默认情况下,浏览器以蓝色作为超链接文字的颜色,访问过的文字则颜色变成暗红色。在<body>标记中也可以自定义这些颜色。 基本...

html 给div设置边框颜色代码,div边框颜色设置

html 给div设置边框颜色代码,div边框颜色设置

div边框颜色 css设置div边框颜色 使用css对div边框设置颜色是常见CSS样式设置。对div边框颜色设置说需要css单词为border。 去了解相关教程:《CSS边框》教程 一、div四条边的边框颜色设置 如果不设置边框宽度粗细...

UI设计规范

UI设计规范

一、界面布局 (版心大小,eg:1200px) 二、颜色 1、背景颜色 2、主颜色 3、辅助颜色   三、文字规范 1、字体颜色 2、字体大小 3、字体类型 四、按钮规范 五、图标规范 六、...

HTML中设置td的字体颜色

td中不行,但body中可以 <body text="green"> td中只可以设置背景颜色 <td bgcolor="gray"> 也可以: <td><font size="3" color="red">This is s...

10月15号

今天学习就简单的看了一下HTML颜色 HTML 颜色由一个十六进制符号来定义,这个符号由红色、绿色和蓝色的值组成(RGB)。 每种颜色的最小值是0(十六进制:#00)。最大值是255(十六进制:#FF)。 作者: 哦心有...

ECharts热力图指定颜色

ECharts热力图指定颜色

ECharts是便捷使用的图标框架,绘制热力图和方便 关键数值 x轴 y轴 数据:(x, y, value) 渐变色 移动效果要将前一次的数据清空 热力图官方链接 https://echarts.apache.org/...

ZH奶酪:通过CSS自定义HTML中hr样式-颜色-形状

ZH奶酪:通过CSS自定义HTML中hr样式-颜色-形状

修改颜色,线条形状,粗细等... CSS代码: .zh_hr{ border:3px solid rgba(255, 255, 255, 0.50); margin-bottom: 2px; margin-top: 2px }...

web前端——html基础笔记 NO.13{盒模型,颜色值,字体的缩写}

盒模型代码简写 还记得在讲盒模型时外边距(margin)、内边距(padding)和边框(border)设置上下左右四个方向的边距是按照顺时针方向设置的:上右下左。具体应用在margin和padding的例子如下: margin:10px 15px 12px 14...

魅蓝Note有几种颜色 魅蓝Note哪个颜色好看

魅蓝Note有几种颜色 魅蓝Note哪个颜色好看

http://www.pc841.com/shoujizhishi/39882.html http://news.mydrivers.com/1/359/359443.htm 魅族发布首款千元高性价比魅蓝Note新机之后,这款大屏时尚机身的新机,备受网友关注与讨论。很多网友...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。