龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

用VC6扩展CButton类制作风格独特的按钮[组图](2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
3、当按钮按下的情形:(参见图三) 图三 二、下面具体描述这种按钮的实现方法和步骤: 在VC6的IDE环境中,生成一个基于对话框的PROJECT。 将对话框资

  3、当按钮按下的情形:(参见图三)

 
  图三

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

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

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

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

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

  在派生类中重载基类CButton的虚函数: virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)

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

  定制以下的消息处理: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);
声明类成员变量定义: //定义字体变量
   CFont fUnderline;
   //定义光标变量
   HCURSOR hHand;
   //决定按钮是否按下
   bool bLBtnDown;
   //决定鼠标是否在按钮上
   bool bHighlight;

精彩图集

赞助商链接