CoolTabCtrl.h
上传用户:sunh8215
上传日期:2010-02-13
资源大小:1616k
文件大小:4k
源码类别:

酒店行业

开发平台:

Visual C++

  1. /*####################################################################
  2. Filename:  cooltabctrl.h
  3. ----------------------------------------------------
  4. Remarks: ...
  5. ----------------------------------------------------
  6.   ####################################################################*/
  7. #if !defined(_ANYOU_COOL_TABCTRL_H)
  8. #define _ANYOU_COOL_TABCTRL_H
  9. #if _MSC_VER > 1000
  10. #pragma once
  11. #endif 
  12. #include <afxtempl.h>
  13. #define TABMODE_NONE 0
  14. #define TABMODE_GROUP 1
  15. #define TABMODE_TOPTAB 2
  16. #define TABMODE_BOTTOMTAB 3
  17. #define TABMODE_LEFTAB 4
  18. #define TABMODE_RIGHTTAB 5
  19. /*####################################################################
  20. ------------------------------------------------
  21. class CTabPageItem
  22. ------------------------------------------------
  23.   ####################################################################*/
  24. class CTabPageItem
  25. {
  26. friend class CCoolTabCtrl;
  27. private:
  28. CWnd* m_pWnd; //窗口,可以为NULL
  29. CCoolTabCtrl* m_pParentWnd;
  30. UINT m_dwState; //窗口类型,0:普通,1:对话框
  31. CString m_strText; //标签
  32. HICON m_hIcon; //图标
  33. CRect m_rect; //矩形区域
  34. int m_nNumber; //序号
  35. public:
  36. ~CTabPageItem();
  37. void OnDraw(CDC *pDC, int nState);
  38. void Hide();
  39. CTabPageItem(CCoolTabCtrl* pParentWnd, CWnd* pWnd, const CString &strText, int nNumber);
  40. void SetRect(const CRect& rect);
  41. void Expend();
  42. void SetIcon(HICON hicon);
  43. protected:
  44. CRect m_rcLabel;
  45. };
  46. /*####################################################################
  47. ------------------------------------------------
  48. class CCoolTabCtrl
  49. ------------------------------------------------
  50.   ####################################################################*/
  51. class CCoolTabCtrl : public CWnd
  52. {
  53. friend class CTabPageItem;
  54. // Construction--------------------------------------
  55. DECLARE_DYNCREATE(CCoolTabCtrl)
  56. public:
  57. CCoolTabCtrl();
  58. virtual ~CCoolTabCtrl();
  59. BOOL Create(const CRect &rect, CWnd *pParentWnd, UINT dwStyle = WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 
  60. UINT dwCtrlStyle = 0, UINT nID = 0);
  61. // Attributes-----------------------------------------
  62. public:
  63. void SetActivePage(int nindex);
  64. void SetBorderStyle(DWORD dwStyle);
  65. void SetCtrlStyle(DWORD dwStyle);
  66. int GetActivePage() { return m_nActivePage;}
  67. // Operations-----------------------------------------
  68. public:
  69. BOOL AddPage(CWnd* pwnd, LPCTSTR strText, UINT IconID);
  70. BOOL AddPage(CRuntimeClass* pClass,UINT nIDTemplate, LPCTSTR strText, UINT IconID);
  71. // Overrides------------------------------------------
  72. // ClassWizard generated virtual function overrides
  73. //{{AFX_VIRTUAL(CCoolTabCtrl)
  74. //}}AFX_VIRTUAL
  75. // Implementation-------------------------------------
  76. public:
  77. void DrawBoder(CDC* pDC, CRect rect);
  78. CWnd* GetPage(int number);
  79. void SetMode(int nMode);
  80.     void AutoSize();
  81. BOOL PlayResource(WORD wResourceID);//点击非客户区播放声音
  82. public:
  83. // static bool m_bDefaultPage;//是否为缺省的页面
  84. // Generated message map functions---------------------
  85. protected:
  86. int m_nMode;
  87. //{{AFX_MSG(CCoolTabCtrl)
  88. afx_msg void OnPaint();
  89. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  90. afx_msg void OnNcPaint();
  91. afx_msg int  OnCreate(LPCREATESTRUCT lpCreateStruct);
  92. afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp);
  93. afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos);
  94. afx_msg UINT OnNcHitTest(CPoint point);
  95. afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
  96. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  97. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  98. afx_msg void OnSize(UINT nType, int cx, int cy);
  99. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  100. //}}AFX_MSG
  101. DECLARE_MESSAGE_MAP()
  102. private:
  103. int m_nHotItem;
  104. DWORD m_dwBorderStyle;
  105. int m_nActivePage;
  106. CFont m_fontWnd;
  107. DWORD m_dwStyle;
  108. CArray<CTabPageItem*, CTabPageItem*> m_aTabPage;
  109. };
  110. //{{AFX_INSERT_LOCATION}}
  111. #endif // !defined(_ANYOU_COOLTABCTRL_H)