多语言展示
当前在线:1909今日阅读:84今日分享:32

如何实现自绘按钮类

在父窗口直接实现按钮控件自绘,请参考《按钮控件怎么自绘》。自绘按钮类的实现过程如下:1.添加一个MFC类。2.在父窗口资源对话框中放置一个按钮。3.给按钮关联一个控件变量,变量的类型就是添加的MFC类。4.自绘按钮控件消息响应和自绘5.在鼠标移动时激活鼠标悬停和鼠标离开事件。6.处理鼠标悬停和离开事件。---------------------------------详细过程---------------------------------
工具/原料

MFC

方法/步骤
1

1.添加一个MFC类添加方法如下图: 上图中,类名中填写你的类名,基类中选择要继承的控件类,此处继承按钮,就是CButton了,其他的默认即可。

2

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

3

3.给按钮关联一个控件变量,变量的类型就是添加的MFC类。右击按钮,选择添加变量,如下图:在上图变量名中填写控件变量,变量类型就填写第一步添加的类名,其他的默认,确定即可。

4

4.自绘按钮控件消息响应和自绘在自己创建的类名上,右击,点击属性,如下图: 在此标签下是控件的消息响应,此处是添加控件单击消息响应。而在主窗口中双击按钮添加的消息响应对此无效。这点要注意。在重载标签页下,才可以添加自绘,而不能在消息中直接进行响应。因为CButton类已经实现,提供了虚函数,如果不重载会出现断言错误。添加重载自绘如下图: 添加完后,就可以在重载函数中写自绘代码了。自绘代码参考《按钮控件怎么自绘》,这篇文中已经写好了。就不重复了。不过此处需要注意一点,因为是控件自己自绘,在自己的类中自绘,因此没有控件ID的参数了,自绘是对本身的操作,和《按钮控件怎么自绘》中所说的方式有所不同。

5

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

6

6.处理鼠标悬停和离开事件。内部处理代码如下图:解释:1. 因为自绘通过得到焦点和失去焦点实现切换,所以在鼠标悬停和离开只要设置按钮的焦点即可。因为鼠标在按钮上没单击是得不到焦点的,所以才需要这样处理。2. 在鼠标移动时,注册鼠标悬停和鼠标离开事件,才会让这两个事件生效,否则实现不了这个功能。-----------------------------------------------------------------------哈哈哈,大功告成!!编译即可出现精彩。如果觉得写得不错,记得分享给你的小伙伴哦。效果预览:

注意事项

这里用一个重载按钮控件类来自绘按钮,鼠标在按钮上时按钮样式改变,离开按钮,恢复按钮样式。在此基础上你可以实现更多的控制。这样实现的自绘按钮可以直接在其他VC项目中使用。

推荐信息