VC颜色选择组合框

老马123爆

老马123爆

2016-02-19 21:42

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享VC颜色选择组合框,希望可以对大家能有小小的帮助。

   本文代码执行效果:

 


  大家对Word一定非常熟悉吧,它里面的东东可真不少,不管是活泼可爱的“大眼夹”,还是各种平面造型的Windows控件我都很喜欢。那么这次就让我们来做个非常常用的控件:“颜色组合框”。如果你现在正在做关于字处理类的软件时我想这个东东一定对你有用,哈哈!还是废话少说,让我们转入正题!

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  一、基本过程

  (1) 首先,打开VC++新建一个基于对话框的空白工程。这个我就不用多做介绍了吧。

  (2) 往界面上拉一个ComboBox控件吧,然后不要忘了声明相应的类对象,我们以后的操作可都全靠它了。

  (3) 新建一个类,该类是从CComboBox类继承下来的,类名为:CBSColorComboBox。

  接下来就让我们先来了解一下画控件的基本原理和过程,也许这个才是本文的原意。大家都知道Windows中所有可视的东西都是画出来的,那么这个画画的内部过程又是怎样的呢?一般画Windows控件的过程分为三大部分:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  第一:在WM_MEASUREITEM消息影射函数中设置当前要画的Item的大小尺寸;

  第二:在WM_DRAWITEM消息影射函数中根据Item的大小尺寸来画该Item(图标/位图/字符串等);

  第三:在WM_PAINT消息映射函数中不断的绘制当前的控件内容。下面我们针对CBSColorComboBox类的这几个过程来做个简单的介绍。

  (1) 在WM_MEASUREITEM消息影射函数中设定Item的大小尺寸。在这里我们只需要设置Item的高度即可。这里的高度我们设置为2倍的系统小ICON的高度(用::GetSystemMetrics(SM_CXSMICON)取得)。

  (2) 在WM_DRAWITEM消息影射函数中根据Item的大小尺寸来画该Item的各种信息。你可以在Item的矩形区域内画各种各样的信息,例如:图标/位图/字符串等等。那么有人会疑问:“我们用什么来画?我们在哪里画?又如何来画呢?”。答案其实都在这个LPDRAWITEMSTRUCT结构中。hDC成员为设备上下文环境(HDC),获得了该设备句柄也就意味着我们拥有了画任何位图/图标/文本的能力;那么接下来的问题就是:我们在哪里来画呢?答案也很简单:获得LPDRAWITEMSTRUCT结构中Item的矩形区域(rcItem),那么这就是你施展才华的空间了,要充分利用它哦!最后一步就是如何来画的问题了,说白了就是如何分配每个元素的空间,如何在它们各自的空间上画出你想要的东西。按照常规一般分别计算出ICON所占的矩形区域/文本所占的矩形区域/位图的矩形区域,如果你还有其他元素那么也应该计算出该元素所占的矩形区域/位图所占的矩形区域。接下来我想一切都很简单了,不外乎CDC类的几个常用函数:画图标用DrawIcon;画位图用:BitBlt;画文字用:DrawText等等。如果你觉得视觉上还不够COOL,你还可以来设置各个Item的文本颜色,背景颜色,以及图标的突起和凹陷的视觉效果。

  二、需要注意的问题:

  第一:程序为了消除不断绘制所带来的闪烁现象,特意在WM_ERASEBKGND消息中中做了特殊处理;在WM_PAINT消息中直接把组合框的客户区当成一幅位图来不断更新,而不是对ICON区域和文本区域分别重绘。

  第二:每当用户改变了组合框的当前内容后,你在画新的Item之前一定要记得清除前次组合框内的内容。

  第三:如果您想选择更多的颜色,那么只要选择组合框中的最后一个Item(More Colors)即可,这个Item是为用户自定义颜色而专门设置的。

  怎么样,做自己的控件Easy吧!其实上面的过程适用于菜单Menu/ListBox/Button/ComboBox等大多数东东的自画过程。如果你感觉听起来还是有点不知所云,那么打开工程看看吧,相信你会一目了然!如果发现了什么问题请来信:lixiaofei@geasp.com或mailto:Devia@163.com

展开更多 50%)
分享

猜你喜欢

VC颜色选择组合框

编程语言 网络编程
VC颜色选择组合框

颜色选择组合框

C语言教程 C语言函数
颜色选择组合框

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

VC如何实现Office式样的扁平组合框

编程语言 网络编程
VC如何实现Office式样的扁平组合框

VC 对话框设置背景颜色和图片

编程语言 网络编程
VC 对话框设置背景颜色和图片

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

vc中改变对话框以及视类窗口的颜色

编程语言 网络编程
vc中改变对话框以及视类窗口的颜色

vc的对话框-

编程语言 网络编程
vc的对话框-

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

手把手教你制作Google Sitemap(详细制作教程和协议讲解)

手把手教你制作Google Sitemap(详细制作教程和协议讲解)

VC树型控件拖动的完美实现

VC树型控件拖动的完美实现
下拉加载更多内容 ↓