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

对话框与窗口

开发平台:

Visual C++

  1. // XTPDockingPaneLayout.h : interface for the CXTPDockingPaneLayout 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(__XTPDOCKINGPANELAYOUT_H__)
  22. #define __XTPDOCKINGPANELAYOUT_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. #include "XTPDockingPaneDefines.h"
  28. #include "Common/XTPXMLHelpers.h"
  29. class CXTPDockingPaneBase;
  30. class CXTPDockingPaneSplitterContainer;
  31. class CXTPDockingPaneBase;
  32. class CXTPDockingPaneAutoHidePanel;
  33. class CXTPDockingPaneManager;
  34. class CXTPPropExchange;
  35. class CXTPDockingPaneTabbedContainer;
  36. class CXTPDockingPaneSplitterWnd;
  37. class CXTPDockingPaneClientContainer;
  38. //===========================================================================
  39. // Summary:
  40. //     CXTPDockingPaneLayout is a stand alone class. It is used to manipulate
  41. //     a pane's layouts.
  42. //===========================================================================
  43. class _XTP_EXT_CLASS CXTPDockingPaneLayout : public CXTPCmdTarget
  44. {
  45. public:
  46. //-----------------------------------------------------------------------
  47. // Summary:
  48. //     Constructs a CXTPDockingPaneLayout object.
  49. // Parameters:
  50. //     pManager - Points to a CXTPDockingPaneManager object
  51. // Returns:
  52. //     A CXTPDockingPaneLayout object.
  53. //-----------------------------------------------------------------------
  54. CXTPDockingPaneLayout(CXTPDockingPaneManager* pManager);
  55. //-----------------------------------------------------------------------
  56. // Summary:
  57. //     Destroys a CXTPDockingPaneLayout object, handles cleanup and deallocation
  58. //-----------------------------------------------------------------------
  59. virtual ~CXTPDockingPaneLayout();
  60. public:
  61. //-----------------------------------------------------------------------
  62. // Summary:
  63. //     Call this member function to copy one layout to another.
  64. // Parameters:
  65. //     pLayout - Source Layout.
  66. //-----------------------------------------------------------------------
  67. void Copy(const CXTPDockingPaneLayout* pLayout);
  68. //-----------------------------------------------------------------------
  69. // Summary:
  70. //     Call this member function to save the layout to the registry.
  71. // Parameters:
  72. //     lpszSection - Registry section.
  73. //-----------------------------------------------------------------------
  74. void Save(LPCTSTR lpszSection);
  75. //-----------------------------------------------------------------------
  76. // Summary:
  77. //     Call this member function to load the layout from the registry.
  78. // Parameters:
  79. //     lpszSection - Registry section.
  80. // Returns:
  81. //     TRUE if successful, otherwise returns FALSE.
  82. //-----------------------------------------------------------------------
  83. BOOL Load(LPCTSTR lpszSection);
  84. //-----------------------------------------------------------------------
  85. // Summary:
  86. //     Retrieves list of layout's panes.
  87. // Returns:
  88. //     A list of the layout's panes
  89. // See Also:
  90. //     CXTPDockingPaneInfoList
  91. //-----------------------------------------------------------------------
  92. CXTPDockingPaneInfoList& GetPaneList() const;
  93. //-----------------------------------------------------------------------
  94. // Summary:
  95. //     Reads or writes this object from or to an archive.
  96. // Parameters:
  97. //     ar - A CArchive object to serialize to or from.
  98. //-----------------------------------------------------------------------
  99. void Serialize(CArchive& ar);
  100. #ifndef  _XTP_EXCLUDE_XML
  101. //-----------------------------------------------------------------------
  102. // Summary:
  103. //     Call this member function to save the layout to the file.
  104. // Parameters:
  105. //     lpszFileName - The full path and file name.
  106. //     lpszSection  - Registry section.
  107. //-----------------------------------------------------------------------
  108. void SaveToFile(LPCTSTR lpszFileName, LPCTSTR lpszSection);
  109. //-----------------------------------------------------------------------
  110. // Summary:
  111. //     Call this member function to load the layout from the file.
  112. // Parameters:
  113. //     lpszFileName - The full path and file name.
  114. //     lpszSection  - Registry section.
  115. // Returns:
  116. //     TRUE if successful, otherwise returns FALSE.
  117. //-----------------------------------------------------------------------
  118. BOOL LoadFromFile(LPCTSTR lpszFileName, LPCTSTR lpszSection);
  119. //-----------------------------------------------------------------------
  120. // Summary:
  121. //     Call this member function to save the layout to the XML node.
  122. // Parameters:
  123. //     xmlNode     - XML node to save.
  124. //     lpszSection - Registry section.
  125. //-----------------------------------------------------------------------
  126. void SaveToNode(CXTPDOMNodePtr xmlNode, LPCTSTR lpszSection);
  127. //-----------------------------------------------------------------------
  128. // Summary:
  129. //     Call this member function to load the layout from the XML node.
  130. // Parameters:
  131. //     xmlNode     - XML node to load.
  132. //     lpszSection  - Registry section.
  133. // Returns:
  134. //     TRUE if successful, otherwise returns FALSE.
  135. //-----------------------------------------------------------------------
  136. BOOL LoadFromNode(CXTPDOMNodePtr xmlNode, LPCTSTR lpszSection);
  137. #endif
  138. //-----------------------------------------------------------------------
  139. // Summary:
  140. //     Call this member to determine if it is a user created layout.
  141. // Returns:
  142. //     TRUE if it is a user created layout.
  143. //-----------------------------------------------------------------------
  144. BOOL IsUserLayout() const;
  145. //-----------------------------------------------------------------------
  146. // Summary:
  147. //     Determines if layout is valid.
  148. // Returns:
  149. //     TRUE if Layout is valid
  150. //-----------------------------------------------------------------------
  151. BOOL IsValid() const;
  152. public:
  153. //-----------------------------------------------------------------------
  154. // Summary:
  155. //     Call this member function to save/restore the settings of the pane.
  156. // Parameters:
  157. //     pPX - Points to a CXTPPropExchange object.
  158. // Returns:
  159. //     TRUE if successful; otherwise returns FALSE.
  160. //-----------------------------------------------------------------------
  161. BOOL DoPropExchange(CXTPPropExchange* pPX);
  162. private:
  163. void Push(CXTPDockingPaneBase* pPane) { m_lstStack.AddTail(pPane); }
  164. void HidePane(CXTPDockingPaneBase* pPane);
  165. void OnSizeParent(CWnd* pParent, CRect rect, LPVOID lParam);
  166. void DestroyPane(CXTPDockingPane* pPane);
  167. void Free();
  168. void _FreeEmptyPanes();
  169. XTPDockingPaneDirection _GetPaneDirection(const CXTPDockingPaneBase* pPane) const;
  170. void _Save(CXTPPropExchange* pPX);
  171. BOOL _Load(CXTPPropExchange* pPX);
  172. BOOL _FindTabbedPaneToHide(CXTPDockingPaneAutoHidePanel* pPanel, CXTPDockingPaneBase* pPane);
  173. void _AddPanesTo(CXTPDockingPaneTabbedContainer* pContainer, CXTPDockingPaneBaseList& lst, DWORD dwIgnoredOptions);
  174. void MoveToTail(CXTPDockingPaneBase* pBase);
  175. private:
  176. CXTPDockingPaneSplitterContainer* m_pTopContainer;
  177. CXTPDockingPaneBase* m_pClient;
  178. CXTPDockingPaneInfoList m_lstPanes;
  179. CXTPDockingPaneBaseList m_lstStack;
  180. XTP_DOCKINGPANE_INFO* FindPane(CXTPDockingPane* pPane);
  181. void RepositionMargins(CRect& rect, const CRect& lpszClientMargins);
  182. CXTPDockingPaneAutoHidePanel* m_wndPanels[4];
  183. CXTPDockingPaneSplitterWnd* m_wndMargins[4];
  184. BOOL m_bUserLayout;
  185. CXTPDockingPaneManager* m_pManager;
  186. private:
  187. friend class CXTPDockingPaneManager;
  188. friend class CXTPDockingPaneBase;
  189. friend class CXTPDockingPane;
  190. friend class CXTPDockingPaneAutoHidePanel;
  191. friend class CDockingPaneSite;
  192. friend class CDockingPaneCtrl;
  193. friend class CXTPDockingPaneSidePanel;
  194. };
  195. AFX_INLINE BOOL CXTPDockingPaneLayout::IsUserLayout() const {
  196. return m_bUserLayout;
  197. }
  198. AFX_INLINE CXTPDockingPaneInfoList& CXTPDockingPaneLayout::GetPaneList() const {
  199. return (CXTPDockingPaneInfoList&)m_lstPanes;
  200. }
  201. #endif // #if !defined(__XTPDOCKINGPANELAYOUT_H__)