在VC++应用程序中实现颜色选择组合框
相信读者朋友们对OFFICE2000一定非常熟悉吧它里面的东东可真不少不管是活泼可爱的"大眼夹"还是各种平面造型的Wi ndows控件都很受广大用户喜欢。那么这次就让我们来模仿它做个十分常用的控件 "颜色组合框"。如果你现在正在做关于字处理类的软件时这个"东东"一定对你有用。程序编译运行后的界面效果如图一所示
图一、颜色选择组合框<
一、实现方法
首先让我们先来了解一下画控件的基本原理和过程也许这个才是本文的原意。大家都知道Wi nd ows中所有可视的东西都是画出来的那么这个画画的内部过程又是怎样的呢一般画Wi nd ows控件的过程分为三大部分一是在WM_MEASURE ITEM消息影射函数中设置当前要画的Item的大小尺寸二是在WM_D RAW ITE M消息影射函数中根据Ite m的大小尺寸来画该Item(图标/位图/字符串等)三是在WM_PAINT消息映射函数中不断的绘制当前的控件内容。下面我们针对CBSColorComboBox类的这几个过程来做个简单的介绍
在WM_MEASURE ITEM消息影射函数中设定Item的大小尺寸的时候我们只需要设置I te m的高度即可。这里的高度我们设置为2倍的系统小图标
SMALL ICON的高度其尺寸用: :GetSystemMetrics SM_CXSMICON
取得。
Visual C++的程序开发人员可以在Item的矩形区域内画各种各样的信息例如图标/位图/字符串等等。那么有人会疑问 "我们用什么来画我们在哪里画又如何来画呢 "。答案其实都在这个LPDRAWITEMSTRUCT结构中。hDC成员为设备上下文环境HDC 获得了该设备句柄也就意味着我们拥有了画任何位图/图标/文本的能力那么接下来的问题就是我们在哪里来画呢答案也很简单获得LP D RAWITE MSTRUC T结构中Item的矩形区域(rc Ite m),那么这就是你施展才华的空间了要充分利用它哦
最后一步就是如何来画的问题了说白了就是如何分配每个元素的空间如何在它们各自的空间上画出你想要的东西。按照常规一般分别计算出ICON所占的矩形区域/文本所占的矩形区域/位图的矩形区域如果你还有其他元素那么也应该计算出该元素所占的矩形区域/位图所占的矩形区域。接下来的一切都很简单了不外乎CDC类的几个常用函数画图标用DrawIco n 、画位图用BitBlt
、画文字用D rawTe xt 等函数。如果你觉得视觉上还不够C OOL你还可以来设置各个Ite m的文本颜色背景颜色 以及图标的突起和凹陷的视觉效果。
不过在上述过程中需要注意三个问题一是为了消除不断绘制所带来的闪烁现象需要在WM_ERASEBKGND消息响应中作些特殊处理在WM_PAINT消息中直接把组合框的客户区当成一幅位图来不断更新而不是对ICON区域和文本区域分别重绘。二是每当用户改变了组合框的当前内容后在画新的Ite m之前一定要记得清除前次组合框内的内容。三是如果想选择更多的颜色那么只要选择组合框中的最后一个Item(More Colors)即可这个Item是为用户自定义颜色而专门设置的。
二、编程步骤
1 、启动Visual C++6.0生成一个基于对话框的项目将该项目命名为"WW"
2、使用Class Wizard新建一个类CBSColorComboBox其基类选择为CComboBox类
3、在程序的对话框中放置一个ComboBox控件使用CLASSWIZARD添加相应的CComboBox类成员变量然后将该成员变量的类型修改为
CBSColorComboBox
4、添加代码编译运行程序。
三、程序代码
官方网站:点击访问火数云活动官网活动方案:CPU内存硬盘带宽流量架构IP机房价格购买地址4核4G50G 高效云盘20Mbps独享不限openstack1个九江287元/月立即抢购4核8G50G 高效云盘20Mbps独享不限openstack1个九江329元/月立即抢购2核2G50G 高效云盘5Mbps独享不限openstack1个大连15.9元/月立即抢购2核4G50G 高效云盘5Mbps独享不限...
HostKvm是一家成立于2013年的国外VPS服务商,产品基于KVM架构,数据中心包括日本、新加坡、韩国、美国、俄罗斯、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。本月,商家旗下俄罗斯、新加坡、美国、香港等节点带宽进行了大幅度升级,俄罗斯机房国内电信/联通直连,CN2线路,150Mbps(原来30Mbps)带宽起,目前俄罗斯和香港高防节点5折骨折码继续优惠中...
pigyun怎么样?PIGYun成立于2019年,2021是PIGYun为用户提供稳定服务的第三年,期待我们携手共进、互利共赢。PIGYun为您提供:香港CN2线路、韩国CN2线路、美西CUVIP-9929线路优质IaaS服务。月付另有通用循环优惠码:PIGYun,获取8折循环优惠(永久有效)。目前,PIGYun提供的香港cn2云服务器仅29元/月起;韩国cn2云服务器仅22元/月起;美国CUVI...