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

对话框与窗口

开发平台:

Visual C++

  1. // XTPDockingPaneMiniWnd.h : interface for the CXTPDockingPaneMiniWnd 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(__XTPDOCKINGPANEMINIWND_H__)
  22. #define __XTPDOCKINGPANEMINIWND_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. #include "XTPDockingPaneBase.h"
  28. //===========================================================================
  29. // Summary:
  30. //     CXTPDockingPaneMiniWnd is a multiple inheritance class derived from
  31. //     CMiniFrameWnd and CXTPDockingPaneBase. It is used internally as a
  32. //     MiniWnd container for CXTPDockingPaneBase derived classes.
  33. //===========================================================================
  34. class _XTP_EXT_CLASS CXTPDockingPaneMiniWnd : public CMiniFrameWnd, public CXTPDockingPaneBase
  35. {
  36. protected:
  37. //-----------------------------------------------------------------------
  38. // Summary:
  39. //     Constructs a CXTPDockingPaneMiniWnd object.
  40. // Parameters:
  41. //     pLayout - Parent layout pointer.
  42. //-----------------------------------------------------------------------
  43. CXTPDockingPaneMiniWnd(CXTPDockingPaneLayout* pLayout);
  44. //-----------------------------------------------------------------------
  45. // Summary:
  46. //     Destroys a CXTPDockingPaneMiniWnd object, handles cleanup and deallocation.
  47. //-----------------------------------------------------------------------
  48. ~CXTPDockingPaneMiniWnd();
  49. public:
  50. //-----------------------------------------------------------------------
  51. // Summary:
  52. //     Determines if the frame is active
  53. // Returns:
  54. //     TRUE if the frame is active
  55. //-----------------------------------------------------------------------
  56. BOOL IsActive() const;
  57. //-----------------------------------------------------------------------
  58. // Summary:
  59. //     Call this method to expand collapsed frame.
  60. //-----------------------------------------------------------------------
  61. void Expand();
  62. //-----------------------------------------------------------------------
  63. // Summary:
  64. //     Retrieves top level container of floating frame
  65. // Returns:
  66. //     Pointer to top container of frame
  67. //-----------------------------------------------------------------------
  68. CXTPDockingPaneSplitterContainer* GetTopPane() const;
  69. //-----------------------------------------------------------------------
  70. // Summary:
  71. //     Determines if frame is collapsed
  72. //-----------------------------------------------------------------------
  73. BOOL IsCollapsed() const;
  74. //-----------------------------------------------------------------------
  75. // Summary:
  76. //     This method is called to collapse frame.
  77. // Parameters:
  78. //     bDelay - TRUE to collapse after small delay with animation.
  79. //-----------------------------------------------------------------------
  80. void Collapse(BOOL bDelay = FALSE);
  81. protected:
  82. //-----------------------------------------------------------------------
  83. // Summary:
  84. //     Copies self data from another pane
  85. // Parameters:
  86. //     pClone  - Pane which members need to copy.
  87. //     pMap - Internal parameter needs to map pane to copied pane.
  88. // See Also:
  89. //     CXTPPaneToPaneMap
  90. //-----------------------------------------------------------------------
  91. virtual void Copy(CXTPDockingPaneBase* pClone, CXTPPaneToPaneMap* pMap, DWORD dwIgnoredOptions);
  92. //-----------------------------------------------------------------------
  93. // Summary:
  94. //     Initialize the frame window
  95. // Parameters:
  96. //     pPane - Child pane will be placed to frame
  97. //     rc    - Rectangle of floating frame.
  98. //-----------------------------------------------------------------------
  99. virtual void Init(CXTPDockingPaneBase* pPane, CRect rc);
  100. protected:
  101. //-----------------------------------------------------------------------
  102. // Summary:
  103. //     Call this member to remove a pane from collection.
  104. // Parameters:
  105. //     pPane - Points to a CXTPDockingPaneBase need to remove
  106. //-----------------------------------------------------------------------
  107. virtual void RemovePane(CXTPDockingPaneBase* pPane);
  108. //-----------------------------------------------------------------------
  109. // Summary:
  110. //     This member is called when a child pane collection is changed.
  111. // Parameters:
  112. //     pContainer - Points to a CXTPDockingPaneBase object that is changed.
  113. //-----------------------------------------------------------------------
  114. virtual void OnChildContainerChanged(CXTPDockingPaneBase* pContainer);
  115. //-----------------------------------------------------------------------
  116. // Summary:
  117. //     Call this member function to save/restore the settings of the pane.
  118. // Parameters:
  119. //     pPX - Points to a CXTPPropExchange object.
  120. // Returns:
  121. //     TRUE if successful; otherwise returns FALSE.
  122. //-----------------------------------------------------------------------
  123. virtual BOOL DoPropExchange(CXTPPropExchange* pPX);
  124. //-----------------------------------------------------------------------
  125. // Summary:
  126. //     Creates frame window
  127. // Parameters:
  128. //     rc - Specifies the size and position of the window
  129. // Returns:
  130. //     Nonzero if initialization is successful; otherwise 0.
  131. //-----------------------------------------------------------------------
  132. virtual BOOL Create(CRect rc);
  133. //-----------------------------------------------------------------------
  134. // Summary:
  135. //     This member is called by the framework when a caption button
  136. //     is clicked.
  137. // Parameters:
  138. //     pButton - Caption button that was clicked.
  139. //-----------------------------------------------------------------------
  140. virtual void OnCaptionButtonClick(CXTPDockingPaneCaptionButton* pButton);
  141. //-----------------------------------------------------------------------
  142. // Summary:
  143. //     This member is called by the framework when the mouse button is pressed
  144. //      on a caption button.
  145. // Parameters:
  146. //     pButton - Caption button that is being clicked.
  147. //-----------------------------------------------------------------------
  148. virtual BOOL OnCaptionButtonDown(CXTPDockingPaneCaptionButton* pButton);
  149. //-----------------------------------------------------------------------
  150. // Summary:
  151. //     Call this member to determine the currently selected pane
  152. // Returns:
  153. //     Pointer to a CXTPDockingPane object that is the currently selected pane.
  154. //-----------------------------------------------------------------------
  155. CXTPDockingPane* GetSelectedPane() const;
  156. //-----------------------------------------------------------------------
  157. // Summary:
  158. //     Call this member to determine if a specific caption button
  159. //     is visible.
  160. // Parameters:
  161. //     pButton - Button to check to see if it is visible.
  162. // Returns:
  163. //     TRUE if the caption button specified is visible, FALSE otherwise.
  164. //-----------------------------------------------------------------------
  165. virtual BOOL IsCaptionButtonVisible(CXTPDockingPaneCaptionButton* pButton);
  166. //-----------------------------------------------------------------------
  167. // Summary:
  168. //     Call this member to determine if themed floating panes are used.
  169. // Returns:
  170. //     TRUE is themed floating panes are used, FALSE otherwise.
  171. //-----------------------------------------------------------------------
  172. BOOL IsThemed() const;
  173. //-----------------------------------------------------------------------
  174. // Summary:
  175. //     This member is called when the theme is changed.
  176. //-----------------------------------------------------------------------
  177. void OnThemedChanged();
  178. //-----------------------------------------------------------------------
  179. // Summary:
  180. //     Call this method to redraw frame
  181. //-----------------------------------------------------------------------
  182. void RedrawPane();
  183. //-----------------------------------------------------------------------
  184. // Summary:
  185. //     Retrieves safe window handle.
  186. //-----------------------------------------------------------------------
  187. virtual HWND GetPaneHwnd() const;
  188. void GetMinMaxInfo(LPMINMAXINFO pMinMaxInfo) const;
  189. protected:
  190. //-----------------------------------------------------------------------
  191. // Summary:
  192. //     This method is called to animate collapsed frame
  193. // Parameters:
  194. //     bActivate - TRUE to activate frame.
  195. //-----------------------------------------------------------------------
  196. void DoSlideStep(BOOL bActivate = FALSE);
  197. //-----------------------------------------------------------------------
  198. // Summary:
  199. //     This member is called when the "pin" caption button is clicked.
  200. //-----------------------------------------------------------------------
  201. void OnPinButtonClick();
  202. //-----------------------------------------------------------------------
  203. // Summary:
  204. //     This member is called when a need to redraw pane.
  205. // Parameters:
  206. //     bSelectionChanged - TRUE if selected pane was changed
  207. //-----------------------------------------------------------------------
  208. virtual void InvalidatePane(BOOL bSelectionChanged);
  209. protected:
  210. //-----------------------------------------------------------------------
  211. // Summary:
  212. //     This member is called to update Opacity of floating frame
  213. // See Also: CXTPDockingPaneManager::SetFloatingFramesOpacity
  214. //-----------------------------------------------------------------------
  215. virtual void UpdateWindowOpacity();
  216. //-------------------------------------------------------------------------
  217. // Summary:
  218. //     This method is called when focus was changed inside application
  219. //-------------------------------------------------------------------------
  220. void OnFocusChanged();
  221. //-----------------------------------------------------------------------
  222. // Summary:
  223. //     Call this member to retrieve a collection of the panes with
  224. //     specified type.
  225. // Parameters:
  226. //     type  - Type of the panes to find.
  227. //     pList - Points to a CXTPDockingPaneBaseList object that will
  228. //             contain found panes.
  229. // See Also:
  230. //     CXTPDockingPaneBaseList
  231. //-----------------------------------------------------------------------
  232. virtual void FindPane(XTPDockingPaneType type, CXTPDockingPaneBaseList* pList) const;
  233. //-----------------------------------------------------------------------
  234. // Summary:
  235. //     This method is called if some action occur
  236. // Parameters:
  237. //     action - Docking Pane action.
  238. // Returns: TRUE if action was canceled
  239. //-----------------------------------------------------------------------
  240. BOOL OnAction(XTPDockingPaneAction action);
  241. void CreateContainer();
  242. //{{AFX_CODEJOCK_PRIVATE
  243. DECLARE_MESSAGE_MAP()
  244. //{{AFX_VIRTUAL(CXTPDockingPaneMiniWnd)
  245. public:
  246. virtual void RecalcLayout(BOOL bNotify = TRUE);
  247. protected:
  248. virtual void PostNcDestroy();
  249. BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
  250. INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
  251. void DeletePane();
  252. void OnFinalRelease();
  253. //}}AFX_VIRTUAL
  254. //{{AFX_MSG(CXTPDockingPaneMiniWnd)
  255. afx_msg void OnClose();
  256. afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
  257. afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);
  258. afx_msg void OnDestroy();
  259. afx_msg LRESULT OnNcHitTest(CPoint point);
  260. afx_msg void OnNcPaint();
  261. afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp);
  262. afx_msg void OnNcMouseMove(UINT nHitTest, CPoint point);
  263. afx_msg void OnTimer(UINT_PTR nIDEvent);
  264. afx_msg void OnIdleUpdateCmdUI();
  265. afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
  266. afx_msg void OnSetFocus(CWnd* pOldWnd);
  267. afx_msg void OnNcRButtonUp(UINT nHitTest, CPoint point);
  268. afx_msg void OnContextMenu(CWnd* pWnd, CPoint pos);
  269. afx_msg BOOL OnNcActivate(BOOL bActive);
  270. afx_msg void OnSizing(UINT nSide, LPRECT lpRect);
  271. //}}AFX_MSG
  272. //}}AFX_CODEJOCK_PRIVATE
  273. private:
  274. BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
  275. BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle = WS_OVERLAPPEDWINDOW, const RECT& rect = rectDefault, CWnd* pParentWnd = NULL, LPCTSTR lpszMenuName = NULL, DWORD dwExStyle = 0, CCreateContext* pContext = NULL);
  276. BOOL Create(LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd = NULL, UINT nID = 0);
  277. void UpdatePosition();
  278. public:
  279. static BOOL m_bShowPinButton;                       // TRUE to show pin button of the frame.
  280. protected:
  281. CXTPDockingPaneSplitterContainer* m_pTopContainer;  // Top level container.
  282. BOOL m_bCloseEnabled;       // Close button of frame is enabled.
  283. int m_nExpandedHeight;      // Expanded height of the frame.
  284. int m_nStepsCount;          // Total steps of animation process
  285. int m_nSlideStep;           // Current step of animation process
  286. int m_nDeactivationCount;   // Deactivation counter.
  287. BOOL m_bCollapsed;          // Pane is collapsed
  288. BOOL m_bExpanded;           // Pane is collapsed but expanded now
  289. BOOL m_bSlideOut;           // Pane is currently expanding.
  290. BOOL m_bDelayInvalidate;    // True to redraw frame after small delay
  291. DECLARE_DYNAMIC(CXTPDockingPaneMiniWnd)
  292. friend class CXTPDockingPaneManager;
  293. friend class CXTPDockingPaneLayout;
  294. };
  295. AFX_INLINE CXTPDockingPaneSplitterContainer* CXTPDockingPaneMiniWnd::GetTopPane() const {
  296. return m_pTopContainer;
  297. }
  298. AFX_INLINE BOOL CXTPDockingPaneMiniWnd::IsActive() const {
  299. return m_bActive;
  300. }
  301. AFX_INLINE BOOL CXTPDockingPaneMiniWnd::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) {
  302. return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
  303. }
  304. AFX_INLINE BOOL CXTPDockingPaneMiniWnd::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, LPCTSTR lpszMenuName, DWORD dwExStyle, CCreateContext* pContext) {
  305. return CFrameWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, lpszMenuName, dwExStyle, pContext);
  306. }
  307. AFX_INLINE BOOL CXTPDockingPaneMiniWnd::Create(LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID) {
  308. return CMiniFrameWnd::Create(lpClassName, lpWindowName, dwStyle, rect, pParentWnd, nID);
  309. }
  310. AFX_INLINE BOOL CXTPDockingPaneMiniWnd::IsCollapsed() const {
  311. return m_bCollapsed;
  312. }
  313. AFX_INLINE HWND CXTPDockingPaneMiniWnd::GetPaneHwnd() const {
  314. return CWnd::GetSafeHwnd();
  315. }
  316. #endif // #if !defined(__XTPDOCKINGPANEMINIWND_H__)