多状态按钮 button vc c++ MFC CBitmapButton
来源:互联网 发布:linux 没有 locate 编辑:程序博客网 时间:2024/05/22 13:33
本文使用vc6.0 MFC程序实现自定义的多状态button。vc9.0(即vs2008)下,去掉stdafx.h文件中的#define _WIN32_WINNT 0x0400 也可以运行(有个warning)。
由于只是示例,并没有注意接口,您可以自己改;自己的美工水平不行,您可以自己更改bitmap资源。
介绍了三种多状态按钮 :
1)三状态按钮
鼠标在button上;鼠标在button外;鼠标按下button
2)六状态按钮
在1)的基础上增加了对应的获得焦点的三种情况
3)MFC自带的CBitmapButton类
有四种状态:up,down,focus,disabled。控件风格不同,状态个数不同,具体可看msdn。
代码可到此处下载:
http://download.csdn.net/source/986965
(一)三状态按钮
1)定义继承自CButton的子类CyctBitmapButton。
2)三状态需要三个位图资源
装在和卸载位图资源:
3)初始化button
窗口初始化后需要调用Init()函数。布尔值变量m_fIsInit确保button只初始化一次。
4)处理鼠标响应函数(这是关键的)
处理了四种鼠标消息WM_MOUSEMOVE,WM_LBUTTONDOWN,WM_LBUTTONUP,WM_MOUSELEAVE:
其中WM_MOUSELEAVE消息响应映射是手工添加的。
在头文件中DECLARE_MESSAGE_MAP()前添加一句:
在对应的cpp文件中BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间添加一句:
WM_MOUSELEAVE消息是由函数TrackMouseEvent产生的,当鼠标离开button控件就会触发此消息。
函数SetBitmap定义如下(具体的看源代码吧):
5)如果想去掉按钮button在获得焦点时的虚框,重载WM_SETFOCUS消息,并且置函数体为空即可。
(二)六状态按钮
与(一)类似,不再叙述。
(三)MFC自带的CBitmapButton类
使用很简单,在对话框类的OnInitDialog内装载四个位图资源即可:
总结:多状态按钮主要是使用函数TrackMouseEvent函数实现的。本文只是示例,很简陋。你也可以下载CButtonST来看看,方法基本一样。下载区有:
http://search.download.csdn.net/search/cbuttonst
- 多状态按钮 button vc c++ MFC CBitmapButton
- MFC 位图按钮CBitmapButton 实现不同状态显示不同位图
- MFC内置的位图按钮CBitmapButton
- MFC 为按钮加载位图 CBitmapButton
- 用CBitmapButton为MFC按钮贴图
- VC 位图按钮CBitmapButton的使用
- VC 位图按钮CBitmapButton的使用
- VC 位图按钮CBitmapButton的使用
- VC 位图按钮CBitmapButton的使用
- VC 位图按钮CBitmapButton的使用
- VC 位图按钮CBitmapButton的使用
- VC 位图按钮CBitmapButton的使用
- Button按钮状态选择器
- button按钮的点击状态
- 设置Button按钮状态背景
- MFC Button按钮的用法
- MFC改变按钮文字Button
- MFC按钮控件(Button)
- 新概念英语第一册Lesson 73 The way to King Street
- 视图层. 控制层, 业务逻辑层, 数据库访问层------新认识
- MIT/GNU Scheme 第一日
- zju1360 Radar Installation
- 在Linux下如何将文本文件中的大写字母全部转换为小写字母
- 多状态按钮 button vc c++ MFC CBitmapButton
- Eclipse小技巧
- Study of Source code
- Linux服务器维护常用命令
- Java 达人
- 使用asx3m与xstream配合解决flex与java利用httpservice传递xml数据问题
- 站长的瞎忙 ==-
- rsync - --backup-dir 使用示例
- wince中断的处理过程