.h
class CZPButton : public CButton
{
public:
CZPButton();
virtual ~CZPButton();
protected:
CBitmap m_bmp1;
CBitmap m_bmp2;
CBitmap m_bmp3;
CBitmap m_bmp4;
//按钮的状态
BOOL m_bOver; //鼠标位于按钮之上时该值为true,反之为flase
BOOL m_bTracking; //在鼠标按下没有释放时该值为true
BOOL m_bSelected; //按钮被按下是该值为true
BOOL m_bFocus; //按钮为当前焦点所在时该值为true
UINT m_nColor;
public:
//{
{AFX_VIRTUAL(CXPButton)
protected:
virtual void PreSubclassWindow();
//}}AFX_VIRTUAL
public:
///绘制按钮纹理
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
///加载按钮各个状态的纹理图
void CreateBmpFile(LPCSTR str1,LPCSTR str2,LPCSTR str3,LPCSTR str4,UINT nColor);
void SetEnabled( BOOL bEnabled );
protected:
//{
{AFX_MSG(CXPButton)
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnMouseHover(WPARAM wParam, LPARAM lParam);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
afx_msg void OnEnable(BOOL bEnable);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/
.cpp
CZPButton::CZPButton()
{
m_bOver = m_bSelected = m_bTracking = m_bFocus = FALSE;
m_nColor