制作风格独特的按钮—用VC6扩展CButton类

文章作者 100test 发表时间 2007:12:01 14:27:56
来源 100Test.Com百考试题网


一、 本文介绍一个CButton的派生类CLinkButton,用此派生类制作的按钮具有以下特点:

1、按钮的外观类似静态控件类CStatic 产生的对象。

2、当鼠标的光标移到按钮上,但并未按下时,光标改变形状,字体改变形状;按钮类似应用在工具条和菜单上的扁平钮效果

二、下面具体描述这种按钮的实现方法和步骤:

1. 在VC6的IDE环境中,生成一个基于对话框的PROJECT。

2. 将对话框资源中按钮的属性页打开,在“Style”标签页中选取按钮的“Owner Draw”(自绘)属性。

3. 将光标引入到应用程序的资源中。

4. 利用CLASSWIZARD,用CButton为基类,派生一个新类:CLinkButton。

5. 在派生类中重载基类CButton的虚函数:

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)

之所以要重载这个函数是因为选择了按钮的 “Owner Draw”属性后,当按钮的可视行为发生变化时,应用程序的框架要调用这个函数来重新绘制按钮。

6. 定制以下的消息处理:

afx_msg void OnMouseMove(UINT nFlags, CPoint point).

afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message).

afx_msg void OnTimer(UINT nIDEvent).

afx_msg void OnLButtonUp(UINT nFlags, CPoint point).

afx_msg void OnLButtonDown(UINT nFlags, CPoint point).

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct).

afx_msg BOOL OnEraseBkgnd(CDC* pDC).

7. 声明类成员变量定义:

//定义字体变量

CFont fUnderline.

//定义光标变量

HCURSOR hHand.

//决定按钮是否按下

bool bLBtnDown.

//决定鼠标是否在按钮上

bool bHighlight.


相关文章


货代综合辅导:货代如何正确签发提单
货运代理人应否承担货物灭失的赔偿责任
货代综合辅导:海关提点小心货代延误退税
系统安装初步之如何将A:磁碟与B:磁碟互调
制作风格独特的按钮—用VC6扩展CButton类
如何以指定的颜色深度启动xwindow
如何在Windows应用程序中实现电子注册功能
用VC 6.0实现PC机与单片机之间串行通信的方法
如何在VC 程序中获得其他程序的图标
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛