用VC6扩展CButton类制作风格独特的按钮[组图](2)
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;
- 上一篇:VC多个MRU菜单的问题
- 下一篇:如何实现类似VC属性表中的钉子按钮