当前位置:C++技术网 > 资讯 > 如何实现自绘按钮类

如何实现自绘按钮类

更新时间:2015-06-25 16:40:30浏览次数:1+次

在父窗口直接实现按钮控件自绘,请参考《按钮控件怎么自绘》。

自绘按钮类的实现过程如下:
1.添加一个MFC类。

2.在父窗口资源对话框中放置一个按钮。

3.给按钮关联一个控件变量,变量的类型就是添加的MFC类。

4.自绘按钮控件消息响应和自绘

5.在鼠标移动时激活鼠标悬停和鼠标离开事件。

6.处理鼠标悬停和离开事件。

---------------------------------详细过程---------------------------------
1.添加一个MFC类
添加方法如下图:

上图中,类名中填写你的类名,基类中选择要继承的控件类,此处继承按钮,就是CButton了,其他的默认即可。

2.在父窗口资源对话框中放置一个按钮。
如图,放置一个按钮。


3.给按钮关联一个控件变量,变量的类型就是添加的MFC类。
右击按钮,选择添加变量,如下图:

在上图变量名中填写控件变量,变量类型就填写第一步添加的类名,其他的默认,确定即可。

4.自绘按钮控件消息响应和自绘
在自己创建的类名上,右击,点击属性,如下图:


在此标签下是控件的消息响应,此处是添加控件单击消息响应。而在主窗口中双击按钮添加的消息响应对此无效。这点要注意。

在重载标签页下,才可以添加自绘,而不能在消息中直接进行响应。因为CButton类已经实现,提供了虚函数,如果不重载会出现断言错误。
添加重载自绘如下图:

添加完后,就可以在重载函数中写自绘代码了。

自绘代码参考《按钮控件怎么自绘》,这篇文中已经写好了。就不重复了。
不过此处需要注意一点,因为是控件自己自绘,在自己的类中自绘,因此没有控件ID的参数了,自绘是对本身的操作,和《按钮控件怎么自绘》中所说的方式有所不同。

5.在鼠标移动时激活鼠标悬停和鼠标离开事件。

同第四步添加点击消息响应一样,添加鼠标移动、鼠标悬停和鼠标离开三个消息响应。如下图:

6.处理鼠标悬停和离开事件。
内部处理代码如下图:

解释:
1. 因为自绘通过得到焦点和失去焦点实现切换,所以在鼠标悬停和离开只要设置按钮的焦点即可。因为鼠标在按钮上没单击是得不到焦点的,所以才需要这样处理。
2. 在鼠标移动时,注册鼠标悬停和鼠标离开事件,才会让这两个事件生效,否则实现不了这个功能。

-----------------------------------------------------------------------
哈哈哈,大功告成!!编译即可出现精彩。如果觉得写得不错,记得分享给你的小伙伴哦。
效果预览: