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

三、程序代码

VirMach:$7.2/年KVM-美元512MB/$7.2/年MB多个机房个机房可选_双线服务器租赁

Virmach对资源限制比较严格,建议查看TOS,自己做好限制,优点是稳定。 vCPU 内存 空间 流量 带宽 IPv4 价格 购买 1 512MB 15GB SSD 500GB 1Gbps 1 $7/VirMach:$7/年/512MB内存/15GB SSD空间/500GB流量/1Gbps端口/KVM/洛杉矶/西雅图/芝加哥/纽约等 发布于 5个月前 (01-05) VirMach,美国老牌、稳...

HostYun(月18元),CN2直连香港大带宽VPS 50M带宽起

对于如今的云服务商的竞争着实很激烈,我们可以看到国内国外服务商的各种内卷,使得我们很多个人服务商压力还是比较大的。我们看到这几年的服务商变动还是比较大的,很多新服务商坚持不超过三个月,有的是多个品牌同步进行然后分别的跑路赚一波走人。对于我们用户来说,便宜的服务商固然可以试试,但是如果是不确定的,建议月付或者主力业务尽量的还是注意备份。HostYun 最近几个月还是比较活跃的,在前面也有多次介绍到商...

RAKsmart推出7.59美元/月,云服务器产品Cloud Server,KVM架构1核1G内存40G硬盘1M带宽基础配置

近期RAKsmart上线云服务器Cloud Server产品,KVM架构1核1G内存40G硬盘1M带宽基础配置7.59美元/月!RAKsmart云服务器Cloud Server位于美国硅谷机房,下单可选DIY各项配置,VPC网络/经典网络,大陆优化/精品网线路,1-1000Mbps带宽,支持Linux或者Windows操作系统,提供Snap和Backup。RAKsmart机房是一家成立于2012年...

vc组合为你推荐
京沪高铁上市首秀京沪高铁将有哪些看点?云计算什么是云计算?access数据库ACCESS数据库有什么用嘉兴商标注册如何注册商标怎样商标注册同ip网站查询怎样查询一个ip绑了多少域名www.983mm.com哪有mm图片?你懂得18comic.fun有什么好玩的网站18comic.fun贴吧经常有人说A站B站,是什么意思啊?嘀动网动网和爱动网各自的优势是什么?丑福晋八阿哥胤禩有几个福晋 都叫啥名儿呀
谷歌域名邮箱 香港ufo photonvps westhost cdn服务器 好看的桌面背景大图 个人免费空间 vul 畅行云 杭州电信宽带优惠 中国电信宽带测速 hdchina 512内存 .htaccess vim 达拉斯 性能测试工具 主机托管 qq空间论坛 免费邮件服务器软件 更多