首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

关于 Windows 计算器的按钮解决方法

2012-01-21 
关于 Windows 计算器的按钮为了做一个数字键盘组件,参看了windows自带的计算器,发现有点实在不明白用spy++

关于 Windows 计算器的按钮
为了做一个数字键盘组件,参看了   windows   自带的计算器,发现有点实在不明白

用   spy++   看了下它的按钮的样式,发现没有   使用   BS_OWNERDRAW,也就是说   不可能是自画的。可它又如何改变   按钮文字的颜色呢?   若处理   WM_CTLCOLORBTN   以设置按钮文字的颜色,按照   MSDN   上说是(没有BS_OWNERDRAW)无效的(我试了,真的无效)。

若不使用   自绘,又有什么办法可以实现   按钮上文字的   多种颜色呢??

用   SDK   实现。

望哪位高手帮帮忙

[解决办法]
帮你顶一下

我没有做过试验,自己从CButton派生一个类,里边设置字体颜色不行么,有时间偶去试试.
[解决办法]
改颜色不需要ownerdraw,也不用派生CButton类
有一个WM_CTLCOLOR消息, 处理一下, 改一下颜色就可以了.
[解决办法]
我觉得 windows 自带的计算器的按钮上可能根本就木有字,而是一堆空白按钮,然后,在按钮的上空用DC(TextOut)画出来的彩色字,这样是最简单的方法。
不信你可以做实验:打开windows 自带的计算器,按下上面的任何一个按钮不放,你会发现按钮上的字并没有随着按钮一起按下,而是保持原样,如果是自绘的按钮,上面的字在按下后会向右下偏移。
[解决办法]
本来不打算回答的, 看来大家讨论的比较热烈, 出来凑个数.
自绘控件不一定非要在WM_CTLCOLORBTN等消息中进行. 其实最好的办法是直接处理WM_PAINT消息, WM_PAINT消息基本上控件绘制的最高控制权, 它只影响控件的外观, 而不影响控件的行为.
WM_PAINT消息不需要设置Owner-draw风格(这个风格很讨厌, 设置了它之后, 像checkbox或radiobutton之类的按钮的选中状态将由程序员自己维护, 也就是说, 按下他们后, 你用CButton::GetCheck来取它的状态, 永远是未选中状态), 你可以自由的在其中绘制控件的外观, 甚至贴图上去, 改个颜色就更简单了.

热点排行