SkinButton.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #ifndef BUTTON_HEAD_FILE
  2. #define BUTTON_HEAD_FILE
  3. #pragma once
  4. #include "SkinUI.h"
  5. #include "ISkinControl.h"
  6. //按妞类型
  7. enum UI_BUTTON_TYPE
  8. {
  9. en_PushButton,
  10. en_CheckButton,
  11. en_RadioButton,
  12. en_IconButton,
  13. en_MenuButton
  14. };
  15. // CButtonEx
  16. class SKINUI_CLASS CSkinButton : public CButton,public ISkinControl
  17. {
  18. DECLARE_DYNAMIC(CSkinButton)
  19. //资源定义
  20. public:
  21. CImageEx * m_pBackImgN, * m_pBackImgH, * m_pBackImgD, * m_pBackImgF;
  22. CImageEx * m_pCheckImgN, * m_pCheckImgH, * m_pCheckImgTickN, *m_pCheckImgTickH;
  23. CImageEx * m_pArrowImg, * m_pIconImg;
  24. //变量定义
  25. protected:
  26. BOOL m_bFocus, m_bPress, m_bHover, m_bMouseTracking;
  27. UI_BUTTON_TYPE m_nBtnType;
  28. HMENU m_hMenu;
  29. HDC m_hBackDC;
  30. bool m_bPushed;
  31. LPCTSTR m_lpszUrl;
  32. //函数定义
  33. public:
  34. //构造函数
  35. CSkinButton();
  36. //析构函数
  37. virtual ~CSkinButton();
  38. //重载函数
  39. protected:
  40. //消息循环
  41. virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);
  42. //设置属性
  43. virtual void SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue);
  44. //创建控件
  45. virtual BOOL CreateControl(CWnd* pParentWnd);
  46. //设置函数
  47. public:
  48. //设置类型
  49. void SetButtonType(UI_BUTTON_TYPE type);
  50. //调整位置
  51. void SetSize(int nWidth,int nHeight);
  52. //设置菜单
  53. void SetMenu(HMENU hMenu);
  54. //设置菜单
  55. void SetPushed(bool bPush);
  56. //资源加载
  57. public:
  58. //设置资源
  59. BOOL SetBackImage(LPCTSTR lpNormal, LPCTSTR lpHoven, LPCTSTR lpDown, LPCTSTR lpFocus,CONST LPRECT lprcNinePart=NULL);
  60. //设置资源
  61. BOOL SetCheckImage(LPCTSTR lpNormal, LPCTSTR lpHoven, LPCTSTR lpTickNormal, LPCTSTR lpTickHoven);
  62. //设置资源
  63. BOOL SetIconImage(LPCTSTR lpszFileName);
  64. //设置资源
  65. BOOL SetMenuImage(LPCTSTR lpszFileName);
  66. //绘画函数
  67. public:
  68. //PUSH按钮
  69. void DrawPushButton(CDC* pDC,RECT &rcClient);
  70. //Check按钮
  71. void DrawCheckButton(CDC* pDC,RECT &rcClient);
  72. //Check按钮
  73. void DrawIConButton(CDC* pDC,RECT &rcClient);
  74. //Check按钮
  75. void DrawMenuButton(CDC* pDC,RECT &rcClient);
  76. //消息函数
  77. protected:
  78. //鼠标移动
  79. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  80. //鼠标离开
  81. afx_msg LRESULT OnMouseLeave(WPARAM wparam, LPARAM lparam);
  82. //重绘背景
  83. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  84. //销毁消息
  85. afx_msg void OnDestroy();
  86. //左键按下
  87. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  88. //左键抬起
  89. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  90. //设置焦点
  91. afx_msg void OnSetFocus(CWnd* pOldWnd);
  92. //焦点丢失
  93. afx_msg void OnKillFocus(CWnd* pNewWnd);
  94. //绘制消息
  95. afx_msg void OnPaint();
  96. //左键双击
  97. afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  98. protected:
  99. DECLARE_MESSAGE_MAP()
  100. };
  101. #endif