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

三、程序代码

火数云-618限时活动,国内云服务器大连3折,限量50台,九江7折 限量30台!

官方网站:点击访问火数云活动官网活动方案:CPU内存硬盘带宽流量架构IP机房价格购买地址4核4G50G 高效云盘20Mbps独享不限openstack1个九江287元/月立即抢购4核8G50G 高效云盘20Mbps独享不限openstack1个九江329元/月立即抢购2核2G50G 高效云盘5Mbps独享不限openstack1个大连15.9元/月立即抢购2核4G50G 高效云盘5Mbps独享不限...

HostKvm($4.25/月),俄罗斯CN2带宽大升级,俄罗斯/香港高防限量5折优惠进行中

HostKvm是一家成立于2013年的国外VPS服务商,产品基于KVM架构,数据中心包括日本、新加坡、韩国、美国、俄罗斯、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。本月,商家旗下俄罗斯、新加坡、美国、香港等节点带宽进行了大幅度升级,俄罗斯机房国内电信/联通直连,CN2线路,150Mbps(原来30Mbps)带宽起,目前俄罗斯和香港高防节点5折骨折码继续优惠中...

pigyun25元/月,香港云服务器仅起;韩国云服务器,美国CUVIP

pigyun怎么样?PIGYun成立于2019年,2021是PIGYun为用户提供稳定服务的第三年,期待我们携手共进、互利共赢。PIGYun为您提供:香港CN2线路、韩国CN2线路、美西CUVIP-9929线路优质IaaS服务。月付另有通用循环优惠码:PIGYun,获取8折循环优惠(永久有效)。目前,PIGYun提供的香港cn2云服务器仅29元/月起;韩国cn2云服务器仅22元/月起;美国CUVI...

vc组合为你推荐
金评媒朱江请问朱江恺撒堡KX系列的钢琴怎么样?固态硬盘是什么固态硬盘是什么?摩根币摩根币是什么意思?梦之队官网梦之队是哪个国家的?百度关键词工具百度有关键字分析工具吗?Google AdWords有的www.5any.comwww.qbo5.com 这个网站要安装播放器sesehu.comwww.hu338.com 怎么看不到啊www.henhenlu.com有一个两位数,十位数字是个位数字的二分之一,将十位数字与个位数字对调,新的两位数比原来大36,这个两位数baqizi.cc孔融弑母是真的吗?bk乐乐《哭泣的Bk》是Bk乐乐唱的吗?
如何注销域名备案 godaddy域名解析 如何申请免费域名 万网免费域名 西安服务器 本网站服务器在美国维护 罗马假日广场 linode 韩国电信 12306抢票攻略 主机屋免费空间 好看的桌面背景大图 debian7 湖南服务器托管 上海域名 日本bb瘦 域名转接 129邮箱 免费测手机号 河南移动m值兑换 更多