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

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

ID:41006675

大小:32.04 KB

页数:17页

时间:2019-08-13

在VC++应用程序中实现颜色选择组合框_第1页
在VC++应用程序中实现颜色选择组合框_第2页
在VC++应用程序中实现颜色选择组合框_第3页
在VC++应用程序中实现颜色选择组合框_第4页
在VC++应用程序中实现颜色选择组合框_第5页
资源描述:

《在VC++应用程序中实现颜色选择组合框》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、在VC++应用程序中实现颜色选择组合框-  相信读者朋友们对OFFICE2000一定非常熟悉吧,它里面的东东可真不少,不管是活泼可爱的"大眼夹",还是各种平面造型的Windows控件都很受广大用户喜欢。那么这次就让我们来模仿它做个十分常用的控件:"颜色组合框"。如果你现在正在做关于字处理类的软件时这个"东东"一定对你有用。程序编译运行后的界面效果如图一所示:图一、颜色选择组合框<  一、实现方法  首先让我们先来了解一下画控件的基本原理和过程,也许这个才是本文的原意。大家都知道Windows中所有可视的东西都是画出来的,那么这个画画的内部过程又是怎样的呢?一般画Windo

2、ws控件的过程分为三大部分:一是在WM_MEASUREITEM消息影射函数中设置当前要画的Item的大小尺寸;二是在WM_DRAWITEM消息影射函数中根据Item的大小尺寸来画该Item(图标/位图/字符串等);三是在WM_PAINT消息映射函数中不断的绘制当前的控件内容。下面我们针对CBSColorComboBox类的这几个过程来做个简单的介绍:  在WM_MEASUREITEM消息影射函数中设定Item的大小尺寸的时候,我们只需要设置Item的高度即可。这里的高度我们设置为2倍的系统小图标(SMALLICON)的高度,其尺寸用::GetSystemMetrics(S

3、M_CXSMICON)取得。  VisualC++的程序开发人员可以在Item的矩形区域内画各种各样的信息,例如:图标/位图/字符串等等。那么有人会疑问:"我们用什么来画?我们在哪里画?又如何来画呢?"。答案其实都在这个LPDRAWITEMSTRUCT结构中。hDC成员为设备上下文环境(HDC),获得了该设备句柄也就意味着我们拥有了画任何位图/图标/文本的能力;那么接下来的问题就是:我们在哪里来画呢?答案也很简单:获得LPDRAWITEMSTRUCT结构中Item的矩形区域(rcItem),那么这就是你施展才华的空间了,要充分利用它哦!  最后一步就是如何来画的问题了,说

4、白了就是如何分配每个元素的空间,如何在它们各自的空间上画出你想要的东西。按照常规一般分别计算出ICON所占的矩形区域/文本所占的矩形区域/位图的矩形区域,如果你还有其他元素那么也应该计算出该元素所占的矩形区域/位图所占的矩形区域。接下来的一切都很简单了,不外乎CDC类的几个常用函数:画图标用DrawIcon()、画位图用BitBlt()、画文字用DrawText()等函数。如果你觉得视觉上还不够COOL,你还可以来设置各个Item的文本颜色,背景颜色,以及图标的突起和凹陷的视觉效果。  不过在上述过程中需要注意三个问题,一是为了消除不断绘制所带来的闪烁现象,需要在WM_E

5、RASEBKGND消息响应中作些特殊处理;在WM_PAINT消息中直接把组合框的客户区当成一幅位图来不断更新,而不是对ICON区域和文本区域分别重绘。二是每当用户改变了组合框的当前内容后,在画新的Item之前一定要记得清除前次组合框内的内容。三是如果想选择更多的颜色,那么只要选择组合框中的最后一个Item(MoreColors)即可,这个Item是为用户自定义颜色而专门设置的。  二、编程步骤  1、启动VisualC++6.0,生成一个基于对话框的项目,将该项目命名为"WW";  2、使用ClassWizard新建一个类CBSColorComboBox,其基类选择为CC

6、omboBox类;  3、在程序的对话框中放置一个ComboBox控件,使用CLASSWIZARD添加相应的CComboBox类成员变量,然后将该成员变量的类型修改为CBSColorComboBox;  4、添加代码,编译运行程序。  三、程序代码//////////////////////////////////////////////////////////////CBSColorComboBox类的头文件;#if!defined(_BS_BSCOLORCB)#define_BS_BSCOLORCB#include//系统常用颜色的自定义名称conststaticch

7、ar*strColorName[]={ "crSCROLLBAR","crBACKGROUND","crACTIVECAPTION","crINACTIVECAPTION","crMENU","crWINDOW","crWINDOWFRAME", "crMENUTEXT","crWINDOWTEXT","crCAPTIONTEXT","crACTIVEBORDER","crINACTIVEBORDER","crAPPWORKSPACE", "crHIGHLIGHT","crHIGHLIGHTTEXT","crBTNFACE",

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。