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

对话框与窗口

开发平台:

Visual C++

  1. // XTPDockingPaneSidePanel.h : interface for the CXTPDockingPaneSidePanel class.
  2. //
  3. // This file is a part of the XTREME DOCKINGPANE 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. //{{AFX_CODEJOCK_PRIVATE
  21. #if !defined(__XTPDOCKINGPANESIDEPANEL_H__)
  22. #define __XTPDOCKINGPANESIDEPANEL_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. #include "XTPDockingPaneBaseContainer.h"
  28. class CXTPDockingPaneLayout;
  29. class CXTPDockingPaneSidePanel;
  30. //===========================================================================
  31. // Summary:
  32. //     CXTPDockingPaneSidePanel is a multiple inheritance class derived from
  33. //     CWnd and CXTPDockingPaneBase. It is used internally as an auto-hide container
  34. //     for CXTPDockingPaneBase derived classes.
  35. //===========================================================================
  36. class _XTP_EXT_CLASS CXTPDockingPaneSidePanel : public CMiniFrameWnd, public CXTPDockingPaneBaseContainer
  37. {
  38. protected:
  39. //-----------------------------------------------------------------------
  40. // Summary:
  41. //     Constructs a CXTPDockingPaneAutoHidePanel object
  42. //     Protected constructor. Internally constructed only.
  43. // Parameters:
  44. //     pLayout - Points to a CXTPDockingPaneLayout object.
  45. //-----------------------------------------------------------------------
  46. CXTPDockingPaneSidePanel(CXTPDockingPaneLayout* pLayout);
  47. //-----------------------------------------------------------------------
  48. // Summary:
  49. //     Destroys a CXTPDockingPaneAutoHidePanel object, handles cleanup and
  50. //     deallocation
  51. //-----------------------------------------------------------------------
  52. ~CXTPDockingPaneSidePanel();
  53. public:
  54. CXTPDockingPaneTabbedContainer* GetTopContainer() const;
  55. XTPDockingPaneDirection GetDirection() const;
  56. //-----------------------------------------------------------------------
  57. // Summary:
  58. //     Call this member function to get child pane state.
  59. // Returns:
  60. //     TRUE if a child pane is active.
  61. //-----------------------------------------------------------------------
  62. BOOL IsActive() const;
  63. CString GetTitle() const;
  64. CXTPDockingPane* GetSelectedPane() const;
  65. public:
  66. //-----------------------------------------------------------------------
  67. // Summary:
  68. //     This method is called to collapse frame.
  69. // Parameters:
  70. //     bDelay - TRUE to collapse after small delay with animation.
  71. //-----------------------------------------------------------------------
  72. void Collapse(BOOL bDelay = FALSE);
  73. //-----------------------------------------------------------------------
  74. // Summary:
  75. //     Determines if frame is collapsed
  76. //-----------------------------------------------------------------------
  77. BOOL IsCollapsed() const;
  78. //-----------------------------------------------------------------------
  79. // Summary:
  80. //     Call this method to expand collapsed frame.
  81. //-----------------------------------------------------------------------
  82. void Expand();
  83. void MovePanel(XTPDockingPaneDirection direction, CRect rect);
  84. protected:
  85. BOOL Init(CXTPDockingPaneBase* pPane, XTPDockingPaneDirection direction, CRect rc);
  86. BOOL Create(CRect rc);
  87. static void AFX_CDECL OnSizeParentEx(CXTPDockingPaneManager* pManager, CWnd* pParent, CRect rect);
  88. protected:
  89. void DeletePane();
  90. void OnFinalRelease();
  91. void PostNcDestroy();
  92. void RecalcLayout(BOOL bNotify = TRUE);
  93. void OnFocusChanged();
  94. void RemovePane(CXTPDockingPaneBase* pPane);
  95. void OnChildContainerChanged(CXTPDockingPaneBase* /*pContainer*/);
  96. void CreateContainer();
  97. void Copy(CXTPDockingPaneBase* pClone, CXTPPaneToPaneMap* pMap, DWORD dwIgnoredOptions);
  98. void _InsertPane(CXTPDockingPaneBase* pPane);
  99. void GetMinMaxInfo(LPMINMAXINFO pMinMaxInfo) const;
  100. BOOL IsHorizontal() const;
  101. INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
  102. BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
  103. //-----------------------------------------------------------------------
  104. // Summary:
  105. //     This member is called to save/restore the settings of the pane.
  106. // Parameters:
  107. //     pPX - Points to a CXTPPropExchange object.
  108. // Returns:
  109. //     TRUE if successful; otherwise returns FALSE.
  110. //-----------------------------------------------------------------------
  111. virtual BOOL DoPropExchange(CXTPPropExchange* pPX);
  112. //-----------------------------------------------------------------------
  113. // Summary:
  114. //     This member is called when a need to redraw pane.
  115. // Parameters:
  116. //     bSelectionChanged - TRUE if selected pane was changed
  117. //-----------------------------------------------------------------------
  118. virtual void InvalidatePane(BOOL bSelectionChanged);
  119. HWND GetPaneHwnd() const;
  120. protected:
  121. //-----------------------------------------------------------------------
  122. // Summary:
  123. //     This method is called to animate collapsed frame
  124. // Parameters:
  125. //     bActivate - TRUE to activate frame.
  126. //-----------------------------------------------------------------------
  127. void DoSlideStep(BOOL bActivate = FALSE);
  128. //-----------------------------------------------------------------------
  129. // Summary:
  130. //     This member is called when the "pin" caption button is clicked.
  131. //-----------------------------------------------------------------------
  132. void OnPinButtonClick();
  133. private:
  134. typedef CArray<CXTPDockingPaneSidePanel*, CXTPDockingPaneSidePanel*> CSidePanelArray;
  135. static void AFX_CDECL OnSizeParentEx(CSidePanelArray& arrSide, CWnd* pParent, CRect rect);
  136. static int _cdecl CompareLength(const void *arg1, const void *arg2);
  137. struct LENGTH;
  138. static void SortLength(LENGTH* pLength, int nFirstIndex, int nLastIndex);
  139. private:
  140. CXTPDockingPaneCaptionButton* HitTestCaptionButton(CPoint point) const;
  141. void OnCaptionButtonClick(CXTPDockingPaneCaptionButton* pButton);
  142. void OnCaptionLButtonDown(CPoint point);
  143. void _RestoreFocus();
  144. BOOL IsCaptionButtonVisible(CXTPDockingPaneCaptionButton* pButton);
  145. void MovePanel(LENGTH* pLength, CRect rect);
  146. int GetMinHeight();
  147. protected:
  148. //{{AFX_CODEJOCK_PRIVATE
  149. DECLARE_MESSAGE_MAP()
  150. //{{AFX_VIRTUAL(CXTPDockingPaneSidePanel)
  151. //}}AFX_VIRTUAL
  152. //{{AFX_MSG(CXTPDockingPaneSidePanel)
  153. afx_msg void OnPaint();
  154. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  155. afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  156. afx_msg void OnSize(UINT nType, int cx, int cy);
  157. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  158. afx_msg void OnMouseLeave();
  159. afx_msg void OnTimer(UINT_PTR nIDEvent);
  160. afx_msg LRESULT OnMouseHover(WPARAM, LPARAM lParam);
  161. afx_msg LRESULT OnNcHitTest(CPoint point);
  162. afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint pt);
  163. afx_msg void OnRButtonUp(UINT /*nFlags*/, CPoint point);
  164. //}}AFX_MSG
  165. BOOL IsResizable(int nHit);
  166. //}}AFX_CODEJOCK_PRIVATE
  167. protected:
  168. XTPDockingPaneDirection m_direction;                          // Location of side panel
  169. int m_nLengthIndex;
  170. int m_nStepsCount;          // Total steps of animation process
  171. int m_nSlideStep;           // Current step of animation process
  172. int m_nDeactivationCount;   // Deactivation counter.
  173. BOOL m_bCollapsed;          // Pane is collapsed
  174. BOOL m_bExpanded;           // Pane is collapsed but expanded now
  175. BOOL m_bSlideOut;           // Pane is currently expanding.
  176. friend class CXTPDockingPaneManager;
  177. friend class CXTPDockingPaneLayout;
  178. };
  179. AFX_INLINE HWND CXTPDockingPaneSidePanel::GetPaneHwnd() const {
  180. return CWnd::GetSafeHwnd();
  181. }
  182. AFX_INLINE XTPDockingPaneDirection CXTPDockingPaneSidePanel::GetDirection() const {
  183. return m_direction;
  184. }
  185. AFX_INLINE BOOL CXTPDockingPaneSidePanel::IsActive() const {
  186. return m_bActive;
  187. }
  188. #endif // #if !defined(__XTPDOCKINGPANESIDEPANEL_H__)