关闭

自绘热点按钮

标签: 热点按钮位图按钮MFC鼠标
381人阅读 评论(0) 收藏 举报
分类:

自绘热点按钮


一、1.在VS2010中新建MFC对话框工程,命名“Test”。

2.删除对话框上所有控件,然后在对话框上添加一个按钮,一个组合框,一个编辑框,更改按钮ID为IDC_TRANSFORM_BTN,更改编辑框ID为IDC_EDIT2。

3.在工作区窗口选择RecourceView选项卡,向对话框中依次导入下列4个位图资源(IDB_BITMAP1…IDB_BITMAP4)


4.创建以CButton类为基类的派生类CHotButton

5.在CHotButton类的头文件中声明变量,


6.在CHotButton类的源文件中的构造函数初始化变量



7. 利用类向导在CHotButton类中添加SetCBitmap函数,在该函数中设置使用的CBitmap类对象;并添加DetachCBitmap函数


7.利用类向导在CHotButton类中添加PreSubclassWindow虚方法,在该方法中设置定时器


7.利用类向导在CHotButton类中处理WM_TIMER消息,在该消息的处理函数中获得鼠标的位置,并判断鼠标是否在按钮控件区域中




8.利用类向导在CHotButton类中调用DrawItem方法,在按钮中绘制图片








9.利用类向导在CHotButton类中处理WM_LBUTTONDOWN消息,在按钮被按下时将m_IsPressed值设为TRUE

10.利用类向导在CHotButton类中处理WM_LBUTTONUP消息,在按钮弹起时将m_IsPressed值设为FALSE


11.在对话框头文件中声明CBitmap类对象,并引用HotButton.h头文件;为“转换”按钮控件关联CHotButton类变量,打开按钮控件属性窗口,选择Ownerdraw自绘属性


12.在对话框头文件中为编辑框控件关联对象m_Edit2,声明一个画刷


13.在对话框源文件中的OnInitDialog()函数中添加


14.在对话框源文件中的OnPaint()函数中的if-else语句的else中添加



15.在对话框源文件中处理WM_CTLCOLOR消息



16.双击“转换”按钮,添加其单击消息响应函数


正常效果图如下:


热点效果图如下:


单击“转换”按钮后,按钮禁用效果:



本程序源码:

http://download.csdn.net/detail/u013541325/8875441



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:20564次
    • 积分:319
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条