自绘按钮的实现 作者:杜修杏 下载本文示例工程 如果你希望能够在自己的程序中表现出新意,那么你一定不会仅仅满足于MFC 提供那些标准控件
这时,我们就必须自己另外多做些工作了
就改变控件外观这一点来说,主要是利用控件的自绘功能(Ow ner Draw )实现的
本篇将和各位一起定义一个XP 风格的CXPButton 按钮类,目的不在于介绍CXPButton 类的使用技巧,而在于向各位阐述实现自绘按钮的方法
当然如果你觉得CXPButton 有用的话,也可以把它的源文件保存下来,直接加入到自己的项目中
本篇要点: 一、准备工作 二、实现原理及难点 三、按钮类的使用 四、小结与提示 五、附录 一、准备工作 在开始编码之前,首先应该确定好,更准确的说应该是设计好按钮在各种状态下的外观
按钮控件的几中基本状态包括: Normal 状态,就是按钮一开始显示时的样子
Over 状态,鼠标指针移动到按钮上面时按钮显示的样子
Dow n 状态,按下按钮时显示的样子
Focus 状态,按钮按下后松开的样子,例如标准按钮按下松开之后会看到按钮内部有一个虚线框
Disable 状态,当然就是按钮被设置成无效的时候的样子啦
我参考了一下Window sXP 中普通按钮的实际样子,设计出XP 按钮各种状态的外观,如下图所示: 至于Dow n 状态主要是在Over 状态的基础上将文字往右下的方向稍微平移,以实现下压的效果
二、实现原理及难点 下面我们开始类的创建,在Workspace 的ClassView 页中右击列表树的根结点,选择New Class… 在弹出窗口中进行派生类的定义,如下图所示,注意,你需要填写的只有Name 和Base class 两项,其余的选项保持默认值就可以了
按OK 按钮退出之后,我们可以在ClassView 里面看到新创建的类的名字
接下来我们可以为 CX