位图在VC 应用程序中实现颜色选择组合框

vc组合  时间:2021-03-03  阅读:()

在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、添加代码编译运行程序。

三、程序代码

腾讯云轻量服务器两款低价年付套餐 2核4GB内存8M带宽 年74元

昨天,有在"阿里云秋季促销活动 轻量云服务器2G5M配置新购年60元"文章中记录到阿里云轻量服务器2GB内存、5M带宽一年60元的活动,当然这个也是国内机房的。我们很多人都清楚备案是需要接入的,如果我们在其他服务商的域名备案的,那是不能解析的。除非我们不是用来建站,而是用来云端的,是可以用的。这不看到其对手腾讯云也有推出两款轻量服务器活动。其中一款是4GB内存、8M带宽,这个比阿里云还要狠。这个真...

Digital-VM80美元新加坡和日本独立服务器

Digital-VM商家的暑期活动促销,这个商家提供有多个数据中心独立服务器、VPS主机产品。最低配置月付80美元,支持带宽、流量和IP的自定义配置。Digital-VM,是2019年新成立的商家,主要从事日本东京、新加坡、美国洛杉矶、荷兰阿姆斯特丹、西班牙马德里、挪威奥斯陆、丹麦哥本哈根数据中心的KVM架构VPS产品销售,分为大硬盘型(1Gbps带宽端口、分配较大的硬盘)和大带宽型(10Gbps...

易探云服务器怎么过户/转让?云服务器PUSH实操步骤

易探云服务器怎么过户/转让?易探云支持云服务器PUSH功能,该功能可将云服务器过户给指定用户。可带价PUSH,收到PUSH请求的用户在接收云服务器的同时,系统会扣除接收方的款项,同时扣除相关手续费,然后将款项打到发送方的账户下。易探云“PUSH服务器”的这一功能,可以让用户将闲置云服务器转让给更多需要购买的用户!易探云服务器怎么过户/PUSH?1.PUSH双方必须为认证用户:2.买家未接收前,卖家...

vc组合为你推荐
留学生认证留学生回国认证,是否要求需要在国外待满三年,还是只需要完成所需的三年课程?西部妈妈网九芽妈妈网加盟费多少同ip网站查询怎么查自己的服务器挂着哪些网站75ff.com开机出现www.ami.com是什么?怎么解决啊陈嘉垣大家觉得陈嘉桓漂亮还是钟嘉欣漂亮?psbc.com邮政储蓄卡如何激活钟神发跪求钟神发名言出处,A站大神看过来同ip网站同IP的两个网站,做单向链接,会不会被K掉??www.se333se.com米奇网www.qvod333.com 看电影的效果好不?百度指数词什么是百度指数
com域名注册1元 linuxapache虚拟主机 高防dns openv 香港vps99idc 韩国俄罗斯 vpsio 网站被封 南昌服务器托管 html空间 e蜗 阿里云浏览器 有奖调查 怎么测试下载速度 支持外链的相册 免费私人服务器 个人免费主页 最漂亮的qq空间 闪讯官网 广州虚拟主机 更多