XTTabCtrlButtons.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:4k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // XTTabCtrlbuttons.h : interface for the CXTTabCtrlbuttons class.
  2. //
  3. // This file is a part of the XTREME CONTROLS MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #if !defined(__XTTABCTRLBUTTONS_H_)
  21. #define __XTTABCTRLBUTTONS_H_
  22. #if _MSC_VER >= 1000
  23. #pragma once
  24. #endif // _MSC_VER >= 1000
  25. class CXTTabCtrlButtons;
  26. class CXTTabBase;
  27. #define XT_IDC_TAB_CLOSE                106
  28. //////////////////////////////////////////////////////////////////////
  29. // Summary: CXTTabCtrlButton is a stand alone structure class.  It is internal used in CXTTabCtrlButtons class.
  30. class CXTTabCtrlButton
  31. {
  32. public:
  33. CXTTabCtrlButton (DWORD wStyle);
  34. void Draw(CDC* pDC, COLORREF clrButton);
  35. DWORD Click(CXTTabCtrlButtons* pWnd, CPoint pt, BOOL bRepeat = FALSE);
  36. void SetRect(CRect rc);
  37. CRect GetRect();
  38. BOOL PtInRect(POINT pt) const;
  39. void CheckForMouseOver (CWnd* pWnd, CPoint pt);
  40. void SetEnable(BOOL bEnable);
  41. CRect m_Rect;
  42. DWORD m_wStyle;
  43. CTabCtrl* m_pTabCtrl;
  44. CXTTabCtrlButtons* m_pButtons;
  45. };
  46. //////////////////////////////////////////////////////////////////////
  47. AFX_INLINE CXTTabCtrlButton::CXTTabCtrlButton(DWORD wStyle) {
  48. m_wStyle = wStyle;
  49. m_pButtons = 0;
  50. m_pTabCtrl = 0;
  51. m_Rect.SetRectEmpty();
  52. }
  53. AFX_INLINE void CXTTabCtrlButton::SetRect (CRect rc) {
  54. m_Rect = rc;
  55. }
  56. AFX_INLINE CRect CXTTabCtrlButton::GetRect() {
  57. return m_Rect;
  58. }
  59. AFX_INLINE BOOL CXTTabCtrlButton::PtInRect (POINT pt) const {
  60. return m_Rect.PtInRect (pt) != 0;
  61. }
  62. //////////////////////////////////////////////////////////////////////
  63. // Summary: CXTTabCtrlButtonsis a CWnd derived class.  It is internally used in the CXTTabBase class.
  64. class CXTTabCtrlButtons: public CWnd
  65. {
  66. public:
  67. CXTTabCtrlButtons();
  68. ~CXTTabCtrlButtons();
  69. BOOL Create(CXTTabBase* pCtrlBase);
  70. int GetWidth();
  71. void ShowButtons(BOOL bShow);
  72. BOOL ShowButtons();
  73. void Refresh();
  74. void SubclassTabButtons(CWnd* pWnd);
  75. void SetButtonStyle(DWORD dwFlags);
  76. void UnSubclassTabButtons();
  77. CTabCtrl* GetTabCtrl() const;
  78. private:
  79. CRect AdjustRect();
  80. private:
  81. CXTTabCtrlButton m_btnClose;
  82. CXTTabCtrlButton m_btnLeft;
  83. CXTTabCtrlButton m_btnRight;
  84. DWORD m_dwFlags;
  85. CTabCtrl* m_pTabCtrl;
  86. CXTTabBase* m_pTabCtrlBase;
  87. BOOL m_bShow;
  88. HWND m_hwndSubclassed;
  89. HWND m_hwndPrimary;
  90. private:
  91. afx_msg void OnPaint();
  92. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  93. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  94. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  95. afx_msg void OnMouseLeave();
  96. afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos);
  97. BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
  98. DECLARE_MESSAGE_MAP()
  99. friend class CXTTabBase;
  100. friend class CXTTabCtrlButton;
  101. };
  102. AFX_INLINE CTabCtrl* CXTTabCtrlButtons::GetTabCtrl() const {
  103. return m_pTabCtrl;
  104. }
  105. AFX_INLINE BOOL CXTTabCtrlButtons::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) {
  106. return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
  107. }
  108. #endif // #if !defined(__XTTABCTRLBUTTONS_H_)