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

对话框与窗口

开发平台:

Visual C++

  1. // XTPDockingPaneManager.h : interface for the CXTPDockingPaneManager 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(__XTPDOCKINGPANEMANAGER_H__)
  22. #define __XTPDOCKINGPANEMANAGER_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/XTPImageManager.h"
  29. #include "Common/XTPSystemHelpers.h"
  30. class CXTPDockingPane;
  31. class CXTPDockingPaneBase;
  32. class CXTPDockingPaneBase;
  33. class CXTPDockingPaneManager;
  34. class CXTPDockingPaneSplitterContainer;
  35. class CXTPDockingPaneTabbedContainer;
  36. class CXTPDockingPaneMiniWnd;
  37. class CXTPDockingPaneContext;
  38. class CXTPDockingPaneLayout;
  39. class CXTPDockingPanePaintManager;
  40. class CXTPImageManagerIcon;
  41. class CXTPImageManager;
  42. class CXTPToolTipContext;
  43. class CXTPDockingPaneSidePanel;
  44. //===========================================================================
  45. // Summary:
  46. //     CXTPDockingPaneManager is a CWnd derived class. It is used to manipulate
  47. //     docking panes.
  48. //===========================================================================
  49. class _XTP_EXT_CLASS CXTPDockingPaneManager : public CWnd, public CXTPAccessible
  50. {
  51. public:
  52. //-----------------------------------------------------------------------
  53. // Summary:
  54. //     Constructs a CXTPDockingPaneManager object
  55. //-----------------------------------------------------------------------
  56. CXTPDockingPaneManager();
  57. //-----------------------------------------------------------------------
  58. // Summary:
  59. //     Destroys a CXTPDockingPaneManager object, handles cleanup and
  60. //     deallocation
  61. //-----------------------------------------------------------------------
  62. ~CXTPDockingPaneManager();
  63. public:
  64. //-----------------------------------------------------------------------
  65. // Summary:
  66. //     Call this member function to install docking panes.
  67. // Parameters:
  68. //     pParent       - Parent frame of the panes.
  69. //     bClipChildren - 'true' to add WS_CLIPCHILDREN and WS_CLIPSIBLING
  70. //                     styles to frame windows so panes are displayed
  71. //                     correctly displayed from a hidden state.
  72. // Returns:
  73. //     'true' if the Docking Pane manager was correctly initialized, otherwise
  74. //     returns 'false'.
  75. // Remarks:
  76. //     You must call this member function first to initialize the Docking Pane
  77. //     manager. This must be called first before any other member functions
  78. //     are called.
  79. //-----------------------------------------------------------------------
  80. bool InstallDockingPanes(CWnd* pParent, bool bClipChildren=true);
  81. //-----------------------------------------------------------------------
  82. // Summary:
  83. //     Call this member function to create a docking pane.
  84. // Parameters:
  85. //     nID        - Unique identifier of the pane.
  86. //     rc         - Initial size of the pane.
  87. //     direction  - Docking direction. Can be any of the values listed in the Remarks section.
  88. //     pNeighbour - Pane's Neighbor. It can be NULL to use the frame as a neighbor.
  89. // Remarks:
  90. //     direction parameter can be one of the following:
  91. //     * <b>xtpPaneDockTop</b> Docks the pane to the top of the neighbor.
  92. //     * <b>xtpPaneDockLeft</b> Docks the pane to the left of the neighbor.
  93. //     * <b>xtpPaneDockRight</b> Docks the pane to the right of the neighbor.
  94. //     * <b>xtpPaneDockBottom</b> Docks the pane to the bottom of the neighbor.
  95. // Returns:
  96. //     The pointer to the created pane.
  97. //-----------------------------------------------------------------------
  98. CXTPDockingPane* CreatePane(UINT nID, CRect rc, XTPDockingPaneDirection direction, CXTPDockingPaneBase* pNeighbour = NULL);
  99. //-----------------------------------------------------------------------
  100. // Summary:
  101. //     Call this member to dock an existing pane.
  102. // Parameters:
  103. //     pPane      - Pane to be docked.
  104. //     direction  - Docking direction. Can be any of the values listed in the Remarks section.
  105. //     pNeighbour - Pane's Neighbor.
  106. // Remarks:
  107. //     direction parameter can be one of the following:
  108. //     * <b>xtpPaneDockTop</b> Docks the pane to the top of the neighbor.
  109. //     * <b>xtpPaneDockLeft</b> Docks the pane to the left of the neighbor.
  110. //     * <b>xtpPaneDockRight</b> Docks the pane to the right of the neighbor.
  111. //     * <b>xtpPaneDockBottom</b> Docks the pane to the bottom of the neighbor.
  112. //-----------------------------------------------------------------------
  113. void DockPane(CXTPDockingPaneBase* pPane, XTPDockingPaneDirection direction, CXTPDockingPaneBase* pNeighbour = NULL);
  114. CXTPDockingPaneSidePanel* DockSidePane(CXTPDockingPaneBase* pPane, XTPDockingPaneDirection direction, CRect rc);
  115. //-----------------------------------------------------------------------
  116. // Summary:
  117. //     Call this member to float an existing pane.
  118. // Parameters:
  119. //     pPane - Pane to be floated.
  120. //     rc    - Floating rectangle.
  121. //-----------------------------------------------------------------------
  122. CXTPDockingPaneMiniWnd* FloatPane(CXTPDockingPaneBase* pPane, CRect rc);
  123. //-----------------------------------------------------------------------
  124. // Summary:
  125. //     Call this member to attach a pane to another one.
  126. // Parameters:
  127. //     pPane      - Pane to be attached.
  128. //     pNeighbour - Pane's Neighbor.
  129. //-----------------------------------------------------------------------
  130. void AttachPane(CXTPDockingPaneBase* pPane, CXTPDockingPaneBase* pNeighbour);
  131. //-----------------------------------------------------------------------
  132. // Summary:
  133. //     Call this member to switch the pane's position (docking/floating).
  134. // Parameters:
  135. //     pPane - Docking Pane.
  136. //-----------------------------------------------------------------------
  137. void ToggleDocking(CXTPDockingPaneBase* pPane);
  138. //-----------------------------------------------------------------------
  139. // Summary:
  140. //     Call this member to switch the pane's Auto hide (docking/auto hide).
  141. // Parameters:
  142. //     pPane - Docking Pane.
  143. //-----------------------------------------------------------------------
  144. void ToggleAutoHide(CXTPDockingPaneBase* pPane);
  145. //-----------------------------------------------------------------------
  146. // Summary:
  147. //     Call this member to show (activate) a pane
  148. // Parameters:
  149. //     nID       - Pane's identifier.
  150. //     pPane     - Pane need to show
  151. //     bSetFocus - TRUE to set focus to selected pane
  152. //-----------------------------------------------------------------------
  153. void ShowPane(int nID, BOOL bSetFocus = TRUE);
  154. void ShowPane(CXTPDockingPane* pPane, BOOL bSetFocus = TRUE); // <COMBINE CXTPDockingPaneManager::ShowPane@int@BOOL>
  155. //-----------------------------------------------------------------------
  156. // Summary:
  157. //     Call this member to close a pane
  158. // Parameters:
  159. //     nID - Pane's identifier.
  160. //     pPane - Pane need to close
  161. //-----------------------------------------------------------------------
  162. void ClosePane(int nID);
  163. void ClosePane(CXTPDockingPane* pPane); // <COMBINE CXTPDockingPaneManager::ClosePane@int>
  164. //-----------------------------------------------------------------------
  165. // Summary:
  166. //     Call this member to destroy a pane
  167. // Parameters:
  168. //     nID - Pane's identifier.
  169. //     pPane - Pane need to destroy
  170. // See Also: ClosePane
  171. //-----------------------------------------------------------------------
  172. void DestroyPane(int nID);
  173. void DestroyPane(CXTPDockingPane* pPane); // <COMBINE CXTPDockingPaneManager::DestroyPane@int>
  174. //-----------------------------------------------------------------------
  175. // Summary:
  176. //     Call this member to hide a pane.
  177. // Parameters:
  178. //     nID - Pane's identifier.
  179. //     pPane - Pane need to hide
  180. //-----------------------------------------------------------------------
  181. void HidePane(int nID);
  182. void HidePane(CXTPDockingPaneBase* pPane);// <COMBINE CXTPDockingPaneManager::HidePane@int>
  183. //-----------------------------------------------------------------------
  184. // Summary:
  185. //     Call this member to find a pane by its identifier.
  186. // Parameters:
  187. //     nID - Pane's identifier.
  188. // Returns:
  189. //     A pointer to a CXTPDockingPane object.
  190. //-----------------------------------------------------------------------
  191. CXTPDockingPane* FindPane(int nID) const;
  192. //-----------------------------------------------------------------------
  193. // Summary:
  194. //     Call this member to check if the pane is closed.
  195. // Parameters:
  196. //     nID - Pane's identifier.
  197. //     pPane - Pane need to close.
  198. // Returns:
  199. //     TRUE if the pane is closed.
  200. //-----------------------------------------------------------------------
  201. BOOL IsPaneClosed(int nID) const;
  202. BOOL IsPaneClosed(CXTPDockingPane* pPane) const; // <COMBINE CXTPDockingPaneManager::IsPaneClosed@int@const>
  203. //-----------------------------------------------------------------------
  204. // Summary:
  205. //     Call this member to check if the pane is hidden.
  206. // Parameters:
  207. //     nID - Pane's identifier.
  208. //     pPane - Points to a CXTPDockingPane object.
  209. // Returns:
  210. //     TRUE if the pane is hidden.
  211. //-----------------------------------------------------------------------
  212. BOOL IsPaneHidden(int nID) const;
  213. BOOL IsPaneHidden(CXTPDockingPane* pPane) const; // <COMBINE CXTPDockingPaneManager::IsPaneHidden@int@const>
  214. //-----------------------------------------------------------------------
  215. // Summary:
  216. //     Call this member to check if the pane is selected.
  217. // Parameters:
  218. //     nID - Pane's identifier.
  219. //     pPane - Points to a CXTPDockingPane object.
  220. // Returns:
  221. //     TRUE if the pane is selected.
  222. //-----------------------------------------------------------------------
  223. BOOL IsPaneSelected(int nID) const;
  224. BOOL IsPaneSelected(CXTPDockingPane* pPane) const; // <COMBINE CXTPDockingPaneManager::IsPaneSelected@int@const>
  225. //-----------------------------------------------------------------------
  226. // Summary:
  227. //     Call this member to set icons to panes.
  228. // Parameters:
  229. //     nIDResource - Resource Identifier.
  230. //     nIDs        - Pointer to an array of pane Ids.
  231. //     nCount      - Number of elements in the array pointed to by nIDs.
  232. //     clrMask     - RGB value of transparent color.
  233. // Returns:
  234. //     TRUE if successful, otherwise returns FALSE.
  235. //-----------------------------------------------------------------------
  236. BOOL SetIcons(UINT nIDResource, const int* nIDs, int nCount, COLORREF clrMask = 0xC0C0C0);
  237. //-----------------------------------------------------------------------
  238. // Summary:
  239. //     Call this member to set an icon to the pane.
  240. // Parameters:
  241. //     nID   - Docking pane's identifier.
  242. //     hIcon - Icon handle.
  243. //-----------------------------------------------------------------------
  244. void SetIcon(UINT nID, CXTPImageManagerIconHandle hIcon);
  245. //-----------------------------------------------------------------------
  246. // Summary:
  247. //     Call this member to get an icon of the pane.
  248. // Parameters:
  249. //     nID - Docking pane's identifier.
  250. //     nWidth - Width of icon to retrieve.
  251. // Returns:
  252. //     The docking pane's icon.
  253. //-----------------------------------------------------------------------
  254. CXTPImageManagerIcon* GetIcon(UINT nID, int nWidth = 16) const;
  255. //-----------------------------------------------------------------------
  256. // Summary:
  257. //     Call this member to remove all icons.
  258. //-----------------------------------------------------------------------
  259. void ClearIconMap();
  260. //-----------------------------------------------------------------------
  261. // Summary:
  262. //     Call this member to set the speed of animation.
  263. // Parameters:
  264. //     dAnimationDelay    - Must be -1 to use nAnimationDuration and  nAnimationInterval.
  265. //     nAnimationDuration - Total time of animation, in milliseconds
  266. //     nAnimationInterval - Amount of time to rest, in milliseconds, between
  267. //                          each step.
  268. // Remarks:
  269. //     To disable animation set nAnimationDuration = 0.
  270. // See Also: GetAnimationDelay
  271. //-----------------------------------------------------------------------
  272. void SetAnimationDelay(double dAnimationDelay = -1, int nAnimationDuration = 128, int nAnimationInterval = 16);
  273. //-----------------------------------------------------------------------
  274. // Summary:
  275. //     Call this member to get the animation speed.
  276. // Parameters:
  277. //     pAnimationDuration - Pointer to receive total time of animation, in milliseconds.
  278. //     pAnimationInterval - Pointer to receive amount of time to rest, in milliseconds, between
  279. //                          each step.
  280. // Returns:
  281. //     Animation delay.
  282. // See Also: SetAnimationDelay
  283. //-----------------------------------------------------------------------
  284. double GetAnimationDelay(int* pAnimationDuration = NULL, int* pAnimationInterval = NULL) const;
  285. //-----------------------------------------------------------------------
  286. // Summary:
  287. //     Call this member to allow user switch and move panes using keyboard.
  288. // Parameters:
  289. //     options - available keyboard keys that can be use to navigate items
  290. // Remarks:
  291. //     options can be combination of the following:
  292. //     * <b>xtpPaneKeyboardUseAltMinus</b> To use Alt+'-' to show context menu
  293. //     * <b>xtpPaneKeyboardUseAltF6</b> To use Alt+F6 to select next pane
  294. //     * <b>xtpPaneKeyboardUseAltF7</b> To use Alt+F7 to show window select dialog
  295. //     * <b>xtpPaneKeyboardUseCtrlTab</b> To use Ctrl+Tab to show window select dialog
  296. //     * <b>xtpPaneKeyboardUseAll</b> To use all keys
  297. //
  298. //     You can call SetKeyboardWindowSelectClass to set custom window for Ctrl-Tab and Alt_F7 operations
  299. // See Also: XTPDockingPaneKeyboardNavigate
  300. //-----------------------------------------------------------------------
  301. void EnableKeyboardNavigate(DWORD options = xtpPaneKeyboardUseAll);
  302. //-----------------------------------------------------------------------
  303. // Summary:
  304. //     Determines if Keyboard Navigate options enabled.
  305. // Returns:
  306. //     Returns combination of XTPDockingPaneKeyboardNavigate flags indicates which keys can be used
  307. //     to navigate panes
  308. // See Also: EnableKeyboardNavigate, XTPDockingPaneKeyboardNavigate
  309. //-----------------------------------------------------------------------
  310. BOOL IsKeyboardNavigateEnabled() const;
  311. //-----------------------------------------------------------------------
  312. // Summary:
  313. //     Call this method to set custom CXTPDockingPaneWindowSelect window, that will use to show active panes and files.
  314. // Parameters:
  315. //     pWindowSelectClass - CRuntimeClass pointer of custom CXTPDockingPaneWindowSelect window.
  316. // See Also: EnableKeyboardNavigate, XTPDockingPaneKeyboardNavigate
  317. //-----------------------------------------------------------------------
  318. void SetKeyboardWindowSelectClass(CRuntimeClass* pWindowSelectClass);
  319. //-----------------------------------------------------------------------
  320. // Summary:
  321. //     Determines Runtime class for CXTPDockingPaneWindowSelect window, that shows active panes and files.
  322. // See Also: SetKeyboardWindowSelectClass, EnableKeyboardNavigate, XTPDockingPaneKeyboardNavigate
  323. //-----------------------------------------------------------------------
  324. CRuntimeClass* GetKeyboardWindowSelectClass() const;
  325. //-----------------------------------------------------------------------
  326. // Summary:
  327. //     Call this method to activate pane in cycle order
  328. // Parameters:
  329. //     pPane - Pane to start; NULL to select first pane
  330. //     bForward - TRUE to select next pane; FALSE to select previous pane
  331. //-----------------------------------------------------------------------
  332. BOOL ActivateNextPane(CXTPDockingPane* pPane, BOOL bForward);
  333. public:
  334. //-----------------------------------------------------------------------
  335. // Summary:
  336. //     Call this member to get the list of the created panes.
  337. // Returns:
  338. //     A list of created panes.
  339. // See Also:
  340. //     GetPaneStack, CXTPDockingPaneInfoList
  341. //-----------------------------------------------------------------------
  342. CXTPDockingPaneInfoList& GetPaneList() const;
  343. //-----------------------------------------------------------------------
  344. // Summary:
  345. //     Call this member to get the list of the created panes.including virtual containers
  346. // Returns:
  347. //     A list of created panes with its containers.
  348. // See Also: GetPaneList
  349. //-----------------------------------------------------------------------
  350. CXTPDockingPaneBaseList& GetPaneStack() const;
  351. //-----------------------------------------------------------------------
  352. // Summary:
  353. //     Call this member to return the docking site of the manager.
  354. // Returns:
  355. //     The docking site.
  356. //-----------------------------------------------------------------------
  357. CWnd* GetSite() const;
  358. //-----------------------------------------------------------------------
  359. // Summary:
  360. //     Call this member to switch the visual theme of the panes.
  361. // Parameters:
  362. //     theme - New visual theme. Can be any of the values listed in the Remarks section.
  363. // Remarks:
  364. //     theme can be one of the following:
  365. //     * <b>xtpPaneThemeDefault</b> Enables the default theme.
  366. //     * <b>xtpPaneThemeOffice</b> Enables Visual Studio .NET style theme.
  367. //     * <b>xtpPaneThemeGrippered</b> Enables Visual Studio 6 style theme.
  368. //     * <b>xtpPaneThemeVisio</b> Enables Visio style theme.
  369. //     * <b>xtpPaneThemeOffice2003</b> Enables Office 2003 style theme.
  370. //     * <b>xtpPaneThemeNativeWinXP</b> Enables XP Theme.
  371. //     * <b>xtpPaneThemeWhidbey</b> Enables Whidbey theme.
  372. //-----------------------------------------------------------------------
  373. void SetTheme(XTPDockingPanePaintTheme theme);
  374. //-----------------------------------------------------------------------
  375. // Summary:
  376. //     Call this member to set a custom theme. See the DockingPane sample
  377. //     as a sample of creating a new theme.
  378. // Parameters:
  379. //     pTheme - New Theme.
  380. //-----------------------------------------------------------------------
  381. void SetCustomTheme(CXTPDockingPanePaintManager* pTheme);
  382. //-----------------------------------------------------------------------
  383. // Summary:
  384. //     Call this member to get the current visual theme.
  385. // Returns:
  386. //     The current theme.
  387. //-----------------------------------------------------------------------
  388. XTPDockingPanePaintTheme GetCurrentTheme() const;
  389. //-----------------------------------------------------------------------
  390. // Summary:
  391. //     Retrieves paint manager of docking panes.
  392. // Returns:
  393. //     Returns paint manager.
  394. //-----------------------------------------------------------------------
  395. CXTPDockingPanePaintManager* GetPaintManager() const;
  396. //-----------------------------------------------------------------------
  397. // Summary:
  398. //     Call this member to create a new layout.
  399. // Remarks:
  400. //     You must delete layout when it no longer used.
  401. // Returns:
  402. //     A pointer to a CXTPDockingPaneLayout object.
  403. //-----------------------------------------------------------------------
  404. virtual CXTPDockingPaneLayout* CreateLayout();
  405. //-----------------------------------------------------------------------
  406. // Summary:
  407. //     Call this member to get the current layout.
  408. // Parameters:
  409. //     pLayout - Pointer to the existing layout.
  410. //-----------------------------------------------------------------------
  411. void GetLayout(CXTPDockingPaneLayout* pLayout) const;
  412. //-----------------------------------------------------------------------
  413. // Summary:
  414. //     Call this member to set the layout.
  415. // Parameters:
  416. //     pLayout - Pointer to the existing layout.
  417. //-----------------------------------------------------------------------
  418. void SetLayout(const CXTPDockingPaneLayout* pLayout);
  419. //-----------------------------------------------------------------------
  420. // Summary:
  421. //     Call this member to redraw all panes.
  422. //-----------------------------------------------------------------------
  423. void RedrawPanes();
  424. //-----------------------------------------------------------------------
  425. // Summary:
  426. //     Call this member to retrieve client pane.
  427. // Returns:
  428. //     A pointer to a CXTPDockingPaneBase object.
  429. //-----------------------------------------------------------------------
  430. CXTPDockingPaneBase* GetClientPane() const;
  431. //-----------------------------------------------------------------------
  432. // Summary:
  433. //     Call this member to destroy all panes.
  434. //-----------------------------------------------------------------------
  435. void DestroyAll();
  436. //-----------------------------------------------------------------------
  437. // Summary:
  438. //     Call this member to close all panes.
  439. //-----------------------------------------------------------------------
  440. void CloseAll();
  441. //-----------------------------------------------------------------------
  442. // Summary:
  443. //     Call this member to retrieve Image Manager of Docking Panes.
  444. // Returns:
  445. //     Image Manager of Docking Panes.
  446. //-----------------------------------------------------------------------
  447. CXTPImageManager* GetImageManager() const;
  448. //-----------------------------------------------------------------------
  449. // Summary:
  450. //     Call this member to set the specified image manager.
  451. // Parameters:
  452. //     pImageManager - Points to a CXTPImageManager object.
  453. //-----------------------------------------------------------------------
  454. void SetImageManager(CXTPImageManager* pImageManager);
  455. //-----------------------------------------------------------------------
  456. // Summary:
  457. //     Call this member to hide client area.
  458. // Parameters:
  459. //     bHide - TRUE to hide client.
  460. //-----------------------------------------------------------------------
  461. void HideClient(BOOL bHide);
  462. //-----------------------------------------------------------------------
  463. // Summary:
  464. //     Checks to see if the client is hidden.
  465. // Returns:
  466. //     TRUE if the client is hidden, FALSE if otherwise
  467. //-----------------------------------------------------------------------
  468. BOOL IsClientHidden() const;
  469. //-----------------------------------------------------------------------
  470. // Summary:
  471. //     Call this method to add margins around panes
  472. // Parameters:
  473. //     nMargin - Width of margin for panes frame
  474. //-----------------------------------------------------------------------
  475. void SetClientMargin(int nMargin);
  476. //-----------------------------------------------------------------------
  477. // Summary:
  478. //     Retrieves width of margin around panes
  479. //-----------------------------------------------------------------------
  480. int GetClientMargin() const;
  481. void SetSideDockingMargin(CRect rcMargin);
  482. CRect GetSideDockingMargin() const;
  483. //-----------------------------------------------------------------------
  484. // Summary:
  485. //     Call this member to use trackers.
  486. // Parameters:
  487. //     bSplitterTracker - TRUE to use trackers.
  488. // Remarks:
  489. //     This member function will display the contents for child pane
  490. //     while the splitter is resized if bSplitterTracker is set to FALSE.
  491. // See Also: IsSplitterTrackerUsed
  492. //-----------------------------------------------------------------------
  493. void UseSplitterTracker(BOOL bSplitterTracker);
  494. //-----------------------------------------------------------------------
  495. // Summary:
  496. //     Call this member to determine if the splitter tracker is used.
  497. // Returns:
  498. //     TRUE if the splitter tracker is used; otherwise returns FALSE.
  499. // See Also: UseSplitterTracker
  500. //-----------------------------------------------------------------------
  501. BOOL IsSplitterTrackerUsed() const;
  502. //-----------------------------------------------------------------------
  503. // Summary:
  504. //     Call this member to set direction of captions
  505. // Parameters:
  506. //     captionDirection - New direction to be set
  507. // Remarks:
  508. //     captionDirection parameter can be one of the following:
  509. //     * <b>xtpPaneCaptionHorizontal</b>
  510. //     * <b>xtpPaneCaptionVertical</b>
  511. //     * <b>xtpPaneCaptionAutoByPosition</b>
  512. //     * <b>xtpPaneCaptionAutoBySize</b>
  513. // Example:
  514. //     m_paneManager.GetPaintManager()->SetCaptionDirection(xtpPaneCaptionAutoSize);
  515. //-----------------------------------------------------------------------
  516. void SetCaptionDirection(XTPDockingPaneCaptionDirection captionDirection);
  517. //-----------------------------------------------------------------------
  518. // Summary:
  519. //     Call this member determine the direction the tab buttons are displayed.
  520. // Remarks:
  521. //     Can return one of the following direction:
  522. //     * <b>xtpPaneCaptionHorizontal</b>
  523. //     * <b>xtpPaneCaptionVertical</b>
  524. //     * <b>xtpPaneCaptionAutoByPosition</b>
  525. //     * <b>xtpPaneCaptionAutoBySize</b>
  526. // Returns:
  527. //      A XTPDockingPaneCaptionDirection flag indicating which direction the
  528. //      pane caption is displayed.
  529. // See Also: SetCaptionDirection
  530. //-----------------------------------------------------------------------
  531. XTPDockingPaneCaptionDirection GetCaptionDirection() const;
  532. //-----------------------------------------------------------------------
  533. // Summary:
  534. //     Call this method to lock splitters.
  535. // Parameters:
  536. //     bLock - TRUE to forbid splitter window panes to
  537. //             be resized.
  538. //-----------------------------------------------------------------------
  539. void LockSplitters(BOOL bLock = TRUE);
  540. //-----------------------------------------------------------------------
  541. // Summary:
  542. //     Call this member to determine if the splitters are locked.
  543. // Returns:
  544. //     TRUE if the splitters are locked; otherwise returns FALSE.
  545. //-----------------------------------------------------------------------
  546. BOOL IsSplittersLocked() const;
  547. //-----------------------------------------------------------------------
  548. // Summary:
  549. //     Call this method to set common caption for floating frames.
  550. // Parameters:
  551. //     lpszCaption - Caption to be set.
  552. //-----------------------------------------------------------------------
  553. void SetFloatingFrameCaption(LPCTSTR lpszCaption);
  554. //-----------------------------------------------------------------------
  555. // Summary:
  556. //     Call this method to use themes for floating frames.
  557. // Parameters:
  558. //     bThemedFloatingFrames - TRUE to use themed floating panes, FALSE otherwise.
  559. //-----------------------------------------------------------------------
  560. void SetThemedFloatingFrames(BOOL bThemedFloatingFrames);
  561. //-----------------------------------------------------------------------
  562. // Summary:
  563. //     Determines if themes are used for the floating frames.
  564. // Returns:
  565. //     TRUE if they are used; otherwise returns FALSE.
  566. //-----------------------------------------------------------------------
  567. BOOL IsThemedFloatingFrames() const;
  568. //-----------------------------------------------------------------------
  569. // Summary:
  570. //     Call this method to enable sticky floating frames
  571. // Parameters:
  572. //     bSticky - TRUE to use sticky floating frames, FALSE otherwise.
  573. //-----------------------------------------------------------------------
  574. void SetStickyFloatingFrames(BOOL bSticky);
  575. //-----------------------------------------------------------------------
  576. // Summary:
  577. //     Determines if sticky floating frames option enabled
  578. //-----------------------------------------------------------------------
  579. BOOL IsStickyFloatingFrames() const;
  580. //-----------------------------------------------------------------------
  581. // Summary:
  582. //     Call this method to set opacity for inactive floating frames
  583. // Parameters:
  584. //     nOpacity - Alpha value. When nOpacity is 0, the window is completely transparent. When nOpacity is 255, the window is opaque.
  585. //-----------------------------------------------------------------------
  586. void SetFloatingFramesOpacity(int nOpacity);
  587. //-----------------------------------------------------------------------
  588. // Summary:
  589. //     Determines opacity for inactive floating frames
  590. //-----------------------------------------------------------------------
  591. int GetFloatingFramesOpacity() const;
  592. //-----------------------------------------------------------------------
  593. // Summary:
  594. //     Call this member to keep the activation of floating frames windows in sync with the activation of the top level frame window.
  595. // Parameters:
  596. //     bSyncActiveFloatingFrames - TRUE to synchronizes the activation of the mini-frame window
  597. //                                to the activation of its parent window.
  598. //-----------------------------------------------------------------------
  599. void SyncActiveFloatingFrames(BOOL bSyncActiveFloatingFrames);
  600. //-----------------------------------------------------------------------
  601. // Summary:
  602. //     Call this member to determine if the current layout is Right-to-Left (RTL).
  603. // Returns:
  604. //     TRUE if the current layout is Right-to-Left (RTL), FALSE if the
  605. //     layout is Left-to-Right.
  606. //-----------------------------------------------------------------------
  607. BOOL IsLayoutRTL() const;
  608. //-----------------------------------------------------------------------
  609. // Summary:
  610. //     Call this member to return the Right-to-Left (RTL) docking direction
  611. //     equivalent to the direction passed in if IsLayoutRTL returns TRUE.
  612. // Parameters:
  613. //     direction - Docking direction
  614. // Returns:
  615. //     Returns the Righ-to-Left docking direction of the supplied direction
  616. //     if IsLayoutRTL returns TRUE.  If IsLayoutRTL returns FALSE, then
  617. //     the direction passed in remains the same.
  618. //-----------------------------------------------------------------------
  619. XTPDockingPaneDirection GetRTLDirection(XTPDockingPaneDirection direction) const;
  620. //-----------------------------------------------------------------------
  621. // Summary:
  622. //     Call this member to determine the XTPDockingPaneDirection of pPane.
  623. // Parameters:
  624. //     pPane - Points to a CXTPDockingPaneBase object
  625. // Returns:
  626. //     The current XTPDockingPaneDirection of pPane.
  627. //-----------------------------------------------------------------------
  628. XTPDockingPaneDirection GetPaneDirection(const CXTPDockingPaneBase* pPane) const;
  629. //-----------------------------------------------------------------------
  630. // Summary:
  631. //     Retrieves top level virtual container for site window.
  632. // Remarks:
  633. //     Top level container always splitter container (xtpPaneTypeSplitterContainer)
  634. // Returns:
  635. //     Top level container.
  636. //-----------------------------------------------------------------------
  637. CXTPDockingPaneBase* GetTopPane() const;
  638. //-----------------------------------------------------------------------
  639. // Summary:
  640. //     Call this method to use custom docking context.
  641. // Parameters:
  642. //     pDockingContext - Points to a CXTPDockingPaneContext object
  643. //-----------------------------------------------------------------------
  644. void SetDockingContext(CXTPDockingPaneContext* pDockingContext);
  645. //-----------------------------------------------------------------------
  646. // Summary:
  647. //     Retrieves current docking context pointer.
  648. // Returns:
  649. //     Pointer to current docking context.
  650. //-----------------------------------------------------------------------
  651. CXTPDockingPaneContext* GetDockingContext() const;
  652. //-----------------------------------------------------------------------
  653. // Summary:
  654. //     Call this member to determine if Alpha Docking Context is used when
  655. //     panes are being dragged and dropped.
  656. // Returns:
  657. //     TRUE if AlphaDockingContext is enabled, FALSE if it is disabled.
  658. // Remarks:
  659. //     AlphaDockingContext must be TRUE if Docking Context Stickers will
  660. //     be used.
  661. // See Also: SetAlphaDockingContext, IsShowDockingContextStickers, SetShowDockingContextStickers
  662. //-----------------------------------------------------------------------
  663. BOOL IsAlphaDockingContext() const;
  664. //-----------------------------------------------------------------------
  665. // Summary:
  666. //     Call this member to specify whether an alpha docking context is
  667. //     used to indicate where a pane can be docked while dragging the pane.
  668. // Parameters:
  669. //     bAlphaDockingContext - TRUE to enable Alpha colorization while docking.
  670. // Remarks:
  671. //     Specifies whether the area that a docking pane can occupy is
  672. //     shaded in gray as the pane is dragged to its new location.  The
  673. //     shaded area indicates the area on the application the docking
  674. //     pane will occupy if docked in that location.
  675. //     AlphaDockingContext must be TRUE if Docking Context Stickers will
  676. //     be used.
  677. // See Also: IsAlphaDockingContext, IsShowDockingContextStickers, SetShowDockingContextStickers
  678. //-----------------------------------------------------------------------
  679. void SetAlphaDockingContext(BOOL bAlphaDockingContext);
  680. //-----------------------------------------------------------------------
  681. // Summary:
  682. //     Call this member to determine whether Docking Context Stickers are used.
  683. // Returns:
  684. //     TRUE if Docking Context Stickers are used, FALSE if they are not used.
  685. // See Also: SetAlphaDockingContext, IsAlphaDockingContext, SetShowDockingContextStickers
  686. //-----------------------------------------------------------------------
  687. BOOL IsShowDockingContextStickers() const;
  688. //-----------------------------------------------------------------------
  689. // Summary:
  690. //     Call this member to specify whether Visual Studio 2005 style
  691. //     Docking Context Stickers are used while dragging a docking pane.
  692. // Parameters:
  693. //     bShowDockingContextStickers - If TRUE, docking stickers are drawn
  694. //     on the screen indicating all the possible locations that the docking
  695. //     pane can be docked while the pane is dragged over the application.
  696. //     AlphaDockingContext must also be True to display the stickers.
  697. // Remarks:
  698. //     AlphaDockingContext must be TRUE if Docking Context Stickers will
  699. //     be used.
  700. // See Also: SetAlphaDockingContext, IsAlphaDockingContext, IsShowDockingContextStickers, SetDockingContextStickerStyle
  701. //-----------------------------------------------------------------------
  702. void SetShowDockingContextStickers(BOOL bShowDockingContextStickers);
  703. //-----------------------------------------------------------------------
  704. // Summary:
  705. //     Call this member to set Docking Context Stickers style.
  706. // Parameters:
  707. //     style - Style of docking pane stickers.
  708. // Remarks:
  709. //     Call SetShowDockingContextStickers to enable Stickers.
  710. //     Style parameter can be one of the following:
  711. //     * <b>xtpPaneStickerStyleWhidbey</b> Whidbey stickers.
  712. //     * <b>xtpPaneStickerStyleVisualStudio2005</b> Visual Studio 2005 stickers.
  713. // See Also: SetShowDockingContextStickers, GetDockingContextStickerStyle
  714. //-----------------------------------------------------------------------
  715. void SetDockingContextStickerStyle(XTPDockingContextStickerStyle style);
  716. //-----------------------------------------------------------------------
  717. // Summary:
  718. //     Call this member to get Docking Context Stickers style.
  719. // Returns:
  720. //     Style of docking pane stickers.
  721. // Remarks:
  722. //     Call SetShowDockingContextStickers to enable Stickers.
  723. // See Also: SetShowDockingContextStickers, SetDockingContextStickerStyle
  724. //-----------------------------------------------------------------------
  725. XTPDockingContextStickerStyle GetDockingContextStickerStyle() const;
  726. //-----------------------------------------------------------------------
  727. // Summary:
  728. //     Call this member to set "Show window contents while dragging" option
  729. // Parameters:
  730. //     bShow - TRUE to set show contents while dragging
  731. //-----------------------------------------------------------------------
  732. void SetShowContentsWhileDragging(BOOL bShow = TRUE);
  733. //-----------------------------------------------------------------------
  734. // Summary:
  735. //     Determines if "Show window contents while dragging" option is enabled
  736. // Returns:
  737. //     TRUE if contents is visible while dragging.
  738. //-----------------------------------------------------------------------
  739. BOOL GetShowContentsWhileDragging() const;
  740. //-----------------------------------------------------------------------
  741. // Summary:
  742. //     Call this method to show Maximize/Restore buttons for docking panes
  743. // Parameters:
  744. //     bShowMaximizeButton - TRUE to show maximize buttons for panes
  745. // See Also: IsCaptionMaximizeButtonsVisible
  746. //-----------------------------------------------------------------------
  747. void ShowCaptionMaximizeButton(BOOL bShowMaximizeButton);
  748. //-----------------------------------------------------------------------
  749. // Summary:
  750. //     Determines if Maximize/Restore buttons for docking panes are visible
  751. // See Also: ShowCaptionMaximizeButton
  752. //-----------------------------------------------------------------------
  753. BOOL IsCaptionMaximizeButtonsVisible() const;
  754. //-----------------------------------------------------------------------
  755. // Summary:
  756. //     Call this method to save current splitter positions for all splitter containers
  757. // See Also: CXTPDockingPaneSplitterContainer
  758. //-----------------------------------------------------------------------
  759. void NormalizeSplitters();
  760. //-----------------------------------------------------------------------
  761. // Summary:
  762. //     Call this method to recalculate layout for all parent frames of panes.
  763. //-----------------------------------------------------------------------
  764. void RecalcFramesLayout();
  765. //-----------------------------------------------------------------------
  766. // Summary:
  767. //     This method updates XTP_DOCKINGPANE_INFO structure for each panes filling
  768. //     its members.
  769. //-----------------------------------------------------------------------
  770. void SyncPanesState();
  771. //-----------------------------------------------------------------------
  772. // Summary:
  773. //     Call this method to set default options for each pane
  774. // Parameters:
  775. //     dwOptions - Option applied for each pane. Can be any of the values listed in the Remarks section.
  776. // Remarks:
  777. //     dwOptions parameter can be one or more of the following:
  778. //     * <b>xtpPaneNoCloseable</b> Indicates the pane cannot be closed.
  779. //     * <b>xtpPaneNoHideable</b> Indicates the pane cannot be hidden.
  780. //     * <b>xtpPaneNoFloatable</b> Indicates the pane cannot be floated.
  781. //     * <b>xtpPaneNoCaption</b> Indicates the pane has no caption..
  782. // See Also: GetDefaultPaneOptions, CXTPDockingPane::SetOptions, XTPDockingPaneOptions
  783. //-----------------------------------------------------------------------
  784. void SetDefaultPaneOptions(DWORD dwOptions);
  785. //-----------------------------------------------------------------------
  786. // Summary:
  787. //     Retrieves default panes options.
  788. // Returns:
  789. //     Default options used for each pane.
  790. // See Also: SetDefaultPaneOptions, XTPDockingPaneOptions
  791. //-----------------------------------------------------------------------
  792. DWORD GetDefaultPaneOptions() const;
  793. //-----------------------------------------------------------------------
  794. // Summary:
  795. //     Call this member function to set the application's panes into and out of print-preview mode.
  796. // Parameters:
  797. //     bPreview - Specifies whether or not to place the application in print-preview mode. Set to TRUE to place in print preview, FALSE to cancel preview mode.
  798. //-----------------------------------------------------------------------
  799. void OnSetPreviewMode (BOOL bPreview);
  800. //-----------------------------------------------------------------------
  801. // Summary:
  802. //     Call this member function to get pane currently active (focused)
  803. //-----------------------------------------------------------------------
  804. CXTPDockingPane* GetActivePane() const;
  805. //-----------------------------------------------------------------------
  806. // Summary:
  807. //     Call this method to get tooltip context pointer.
  808. //-----------------------------------------------------------------------
  809. CXTPToolTipContext* GetToolTipContext() const;
  810. //-----------------------------------------------------------------------
  811. // Summary:
  812. //     Call this member function to save/restore the settings of the pane.
  813. // Parameters:
  814. //     pPX - Points to a CXTPPropExchange object.
  815. // Returns:
  816. //     TRUE if successful; otherwise returns FALSE.
  817. //-----------------------------------------------------------------------
  818. BOOL DoPropExchange(CXTPPropExchange* pPX);
  819. //-----------------------------------------------------------------------
  820. // Summary:
  821. //     This method is called to recalculate layout of pane's site.
  822. // Parameters:
  823. //     pPane - Pane which site need to recalculate
  824. //     bDelay - TRUE to recalculate after small delay
  825. //-----------------------------------------------------------------------
  826. void RecalcFrameLayout(CXTPDockingPaneBase* pPane, BOOL bDelay = FALSE);
  827. //-----------------------------------------------------------------------
  828. // Summary:
  829. //     This method is called to update panes state
  830. //-----------------------------------------------------------------------
  831. void UpdatePanes();
  832. //-----------------------------------------------------------------------
  833. // Summary:
  834. //     This member is called to notify the parent window that an event
  835. //     has occurred in the docking pane.
  836. // Parameters:
  837. //     nCode -  Specifies which event has occurred.
  838. //     lParam  - Additional message-specific information.
  839. //-----------------------------------------------------------------------
  840. virtual LRESULT NotifyOwner(UINT nCode, LPARAM lParam);
  841. //-----------------------------------------------------------------------
  842. // Summary:
  843. //     Call this method to show and activate pane
  844. // Parameters:
  845. //     pPane - pane to show
  846. // See Also: ShowPane
  847. //-----------------------------------------------------------------------
  848. void EnsureVisible(CXTPDockingPaneBase* pPane);
  849. void EnableSideDocking(BOOL bEnable = TRUE);
  850. BOOL IsSideDockingEnabled() const;
  851. public:
  852. //-----------------------------------------------------------------------
  853. // Summary:
  854. //     This method is called when a pane is created.
  855. // Parameters:
  856. //     type    - Type of pane that is created.
  857. //     pLayout - Points to a CXTPDockingPaneLayout object.
  858. // Returns:
  859. //     Created pane.
  860. //-----------------------------------------------------------------------
  861. virtual CXTPDockingPaneBase* OnCreatePane(XTPDockingPaneType type, CXTPDockingPaneLayout* pLayout);
  862. //-----------------------------------------------------------------------
  863. // Summary:
  864. //     This method is called when a pane activated/deactivated
  865. // Parameters:
  866. //     bActive - TRUE if pane activated, FALSE otherwise;
  867. //     pPane - Pane was activated/deactivated.
  868. //-----------------------------------------------------------------------
  869. virtual void OnActivatePane(BOOL bActive, CXTPDockingPane* pPane);
  870. BOOL NotifyAction(XTPDockingPaneAction action, CXTPDockingPane* pPane, CXTPDockingPaneBase* pDockContainer = NULL, XTPDockingPaneDirection dockDirection = xtpPaneDockLeft);
  871. protected:
  872. //{{AFX_CODEJOCK_PRIVATE
  873. DECLARE_MESSAGE_MAP()
  874. //{{AFX_MSG(CXTPDockingPaneManager)
  875. afx_msg void OnSysColorChange();
  876. afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection);
  877. afx_msg LRESULT OnSizeParent(WPARAM, LPARAM lParam);
  878. afx_msg LRESULT OnIdleUpdateCmdUI(WPARAM wParam, LPARAM);
  879. afx_msg void OnInitialUpdate();
  880. afx_msg LRESULT OnGetObject(WPARAM wParam, LPARAM lParam);
  881. BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
  882. //}}AFX_MSG
  883. //}}AFX_CODEJOCK_PRIVATE
  884. protected:
  885. //{{AFX_CODEJOCK_PRIVATE
  886. // System accessibility support.
  887. virtual HRESULT GetAccessibleParent(IDispatch** ppdispParent);
  888. virtual HRESULT GetAccessibleChildCount(long* pcountChildren);
  889. virtual HRESULT GetAccessibleChild(VARIANT varChild, IDispatch** ppdispChild);
  890. virtual HRESULT GetAccessibleName(VARIANT varChild, BSTR* pszName);
  891. virtual HRESULT GetAccessibleRole(VARIANT varChild, VARIANT* pvarRole);
  892. virtual HRESULT AccessibleLocation(long *pxLeft, long *pyTop, long *pcxWidth, long* pcyHeight, VARIANT varChild);
  893. virtual HRESULT AccessibleHitTest(long xLeft, long yTop, VARIANT* pvarChild);
  894. virtual HRESULT GetAccessibleState(VARIANT varChild, VARIANT* pvarState);
  895. virtual CCmdTarget* GetAccessible();
  896. DECLARE_INTERFACE_MAP()
  897. //}}AFX_CODEJOCK_PRIVATE
  898. private:
  899. CXTPDockingPaneLayout* GetCurrentLayout() const;
  900. CRect _CalculateResultDockingRect(CXTPDockingPaneBase* pPane, XTPDockingPaneDirection direction, CXTPDockingPaneBase* pNeighbour);
  901. void _InsertPane(CXTPDockingPaneBase* pPane, XTPDockingPaneDirection direction, CXTPDockingPaneBase* pNeighbour);
  902. void _RemovePane(CXTPDockingPaneBase* pPane);
  903. void _AttachPane(CXTPDockingPaneBase* pPane, CXTPDockingPaneBase* pNeighbour);
  904. CXTPDockingPaneBase* _GetHolder(CXTPDockingPaneBase* pPane, BOOL bFloating);
  905. CXTPDockingPaneBase* _Clone(CXTPDockingPaneBase* pPane);
  906. void _TrackPopupContextMenu(CXTPDockingPane* pPane);
  907. void _Redraw();
  908. void _DetachAll();
  909. BOOL _ToggleDocking(CXTPDockingPane* pPane, CXTPDockingPaneBase* pHolder);
  910. public:
  911. int m_nSplitterGap;                             // Minimum available width of panes.
  912. BOOL m_bCloseGroupOnButtonClick;                // If TRUE, when the close button on a group of panes is clicked, then the entire group of panes is closed.  If FALSE, the only the currently visible pane in the group will be closed.
  913. BOOL m_bHideGroupOnButtonClick;                 // If TRUE, when the hide button on a group of panes is clicked, then the entire group of panes is hidden.  If FALSE, the only the currently visible pane in the group will be hidden.
  914. BOOL m_bShowSizeCursorWhileDragging;            // TRUE to show size cursor while panes are dragged
  915. CPoint m_ptMinClientSize;                       // Minimum client size
  916. int m_nStickyGap;                               // Sticky gap
  917. protected:
  918. CWnd* m_pSite;                                  // Parent window of docking manager.
  919. CXTPDockingPaneLayout* m_pLayout;               // Selected layout.
  920. CXTPDockingPanePaintManager* m_pPaintManager;   // Current paint manager.
  921. CXTPDockingPane* m_pActivePane;                 // Current Active pane;
  922. int m_nClientMargin;                            // Client margins
  923. CRect m_rcSideDockingMargin;
  924. BOOL m_bStickyFloatingFrames;                   // TRUE to enable sticky option for floating panes
  925. CXTPImageManager* m_pImageManager;              // Image manager of docking panes.
  926. BOOL m_bSideDocking;
  927. BOOL m_bHideClient;                             // If TRUE, the client area is hidden so that only the docking panes are visible and occupy the entire area.
  928. BOOL m_bUseSplitterTracker;                     // If TRUE, splitter trackers are used.  When resizing a docking pane, an outline of the pane is drawn as the splitter is dragged.  If FALSE, the docking pane will be resized in "real-time."
  929. BOOL m_bShowMaximizeButton;                     // Allow panes to be maximized.
  930. BOOL m_bLockSplitters;                          // If TRUE, you can not resize the panes when they are docked. However, panes can be resized via code and when they are floated.
  931. BOOL m_bAlphaDockingContext;                    // If TRUE, alpha docking context is used when dragging a pane, the shaded area indicates the panes new location of dropped.
  932. BOOL m_bShowDockingContextStickers;             // If TRUE, docking context stickers are drawn when the pane is being dragged and dropped. m_bAlphaDockingContext must be TRUE.
  933. BOOL m_bShowContentsWhileDragging;              // If TRUE, window contents is visible while dragging.
  934. BOOL m_bThemedFloatingFrames;                   // If TRUE, floating docking panes will use the currently set theme.
  935. BOOL m_bSyncActiveFloatingFrames;               // Synchronizes the activation of the mini-frame window to the activation of its parent window.
  936. BOOL m_nFloatingFramesOpacity;                  // Opacity of floating frames
  937. DWORD m_bKeyboardEnabled;                       // XTPDockingPaneKeyboardNavigate options
  938. DWORD m_dwDefaultPaneOptions;                   // Default Panes options.
  939. XTPDockingPaneCaptionDirection m_captionDirection; // Caption Direction
  940. CString m_strFloatingFrameCaption;              // The caption that is displayed in the title bar of a floating frame that has panes docked. This is the floating frame that contains other docking panes.
  941. XTPDockingContextStickerStyle m_nDockingContextStickerStyle;  // Sticker style.
  942. CXTPDockingPaneContext* m_pDockingContext;      // Docking context helper.
  943. CXTPDockingPaneLayout* m_pPreviewLayout;        // Preview mode layout.
  944. CXTPToolTipContext* m_pToolTipContext;          // Tooltip Context.
  945. typedef BOOL (WINAPI *PFNSETLAYEREDWINDOWATTRIBUTES) (HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);
  946. PFNSETLAYEREDWINDOWATTRIBUTES m_pfnSetLayeredWindowAttributes;          // POinter to SetLayeredWindowAttributes API function
  947. CRuntimeClass* m_pWindowSelectClass;            // Runtime class of WindowSelect
  948. private:
  949. HWND m_hwndLastFocus;
  950. BOOL m_bAttachingPane;
  951. BOOL m_bLayoutCreated;
  952. BOOL m_bInitialUpdateCalled;
  953. CString m_strMove;
  954. friend class CXTPDockingPaneBase;
  955. friend class CXTPDockingPaneBaseContainer;
  956. friend class CXTPDockingPaneSplitterContainer;
  957. friend class CXTPDockingPaneTabbedContainer;
  958. friend class CXTPDockingPaneMiniWnd;
  959. friend class CXTPDockingPaneAutoHideWnd;
  960. friend class CXTPDockingPaneContext;
  961. friend class CXTPDockingPane;
  962. friend class CXTPDockingPaneLayout;
  963. friend class CXTPDockingPaneAutoHidePanel;
  964. friend class CDockingPaneSite;
  965. friend class CDockingPaneCtrl;
  966. friend class CDockingPaneOptions;
  967. };
  968. AFX_INLINE CWnd* CXTPDockingPaneManager::GetSite() const {
  969. return m_pSite;
  970. }
  971. AFX_INLINE CXTPDockingPaneLayout* CXTPDockingPaneManager::GetCurrentLayout() const {
  972. return m_pLayout;
  973. }
  974. AFX_INLINE void CXTPDockingPaneManager::RedrawPanes() {
  975. _Redraw();
  976. }
  977. AFX_INLINE CXTPDockingPanePaintManager* CXTPDockingPaneManager::GetPaintManager() const {
  978. return m_pPaintManager;
  979. }
  980. AFX_INLINE BOOL CXTPDockingPaneManager::IsClientHidden() const {
  981. return m_bHideClient;
  982. }
  983. AFX_INLINE void CXTPDockingPaneManager::UseSplitterTracker(BOOL bSplitterTracker) {
  984. m_bUseSplitterTracker = bSplitterTracker;
  985. }
  986. AFX_INLINE BOOL CXTPDockingPaneManager::IsSplitterTrackerUsed() const {
  987. return m_bUseSplitterTracker;
  988. }
  989. AFX_INLINE CXTPImageManager* CXTPDockingPaneManager::GetImageManager() const {
  990. return m_pImageManager;
  991. }
  992. AFX_INLINE BOOL CXTPDockingPaneManager::IsSplittersLocked() const {
  993. return m_bLockSplitters;
  994. }
  995. AFX_INLINE void CXTPDockingPaneManager::SetFloatingFrameCaption(LPCTSTR lpszCaption) {
  996. m_strFloatingFrameCaption = lpszCaption;
  997. }
  998. AFX_INLINE BOOL CXTPDockingPaneManager::IsThemedFloatingFrames() const {
  999. return m_bThemedFloatingFrames;
  1000. }
  1001. AFX_INLINE void CXTPDockingPaneManager::SetStickyFloatingFrames(BOOL bSticky) {
  1002. m_bStickyFloatingFrames = bSticky;
  1003. }
  1004. AFX_INLINE BOOL CXTPDockingPaneManager::IsStickyFloatingFrames() const {
  1005. return m_bStickyFloatingFrames;
  1006. }
  1007. AFX_INLINE CXTPDockingPaneContext* CXTPDockingPaneManager::GetDockingContext() const {
  1008. return m_pDockingContext;
  1009. }
  1010. AFX_INLINE BOOL CXTPDockingPaneManager::IsAlphaDockingContext() const {
  1011. return m_bAlphaDockingContext;
  1012. }
  1013. AFX_INLINE void CXTPDockingPaneManager::SetAlphaDockingContext(BOOL bAlphaDockingContext) {
  1014. m_bAlphaDockingContext = bAlphaDockingContext;
  1015. }
  1016. AFX_INLINE BOOL CXTPDockingPaneManager::IsShowDockingContextStickers() const {
  1017. return m_bShowDockingContextStickers;
  1018. }
  1019. AFX_INLINE void CXTPDockingPaneManager::SetShowDockingContextStickers(BOOL bShowDockingContextStickers) {
  1020. m_bShowDockingContextStickers = bShowDockingContextStickers;
  1021. }
  1022. AFX_INLINE void CXTPDockingPaneManager::SetDefaultPaneOptions(DWORD dwOptions) {
  1023. m_dwDefaultPaneOptions = dwOptions;
  1024. }
  1025. AFX_INLINE DWORD CXTPDockingPaneManager::GetDefaultPaneOptions() const {
  1026. return m_dwDefaultPaneOptions;
  1027. }
  1028. AFX_INLINE void CXTPDockingPaneManager::HidePane(int nID) {
  1029. HidePane((CXTPDockingPaneBase*)FindPane(nID));
  1030. }
  1031. AFX_INLINE void CXTPDockingPaneManager::ClosePane(int nID) {
  1032. ClosePane(FindPane(nID));
  1033. }
  1034. AFX_INLINE void CXTPDockingPaneManager::ShowPane(int nID, BOOL bSetFocus) {
  1035. ShowPane(FindPane(nID), bSetFocus);
  1036. }
  1037. AFX_INLINE void CXTPDockingPaneManager::DestroyPane(int nID) {
  1038. DestroyPane(FindPane(nID));
  1039. }
  1040. AFX_INLINE BOOL CXTPDockingPaneManager::IsPaneClosed(int nID) const {
  1041. return IsPaneClosed(FindPane(nID));
  1042. }
  1043. AFX_INLINE BOOL CXTPDockingPaneManager::IsPaneHidden(int nID) const {
  1044. return IsPaneHidden(FindPane(nID));
  1045. }
  1046. AFX_INLINE BOOL CXTPDockingPaneManager::IsPaneSelected(int nID) const {
  1047. return IsPaneSelected(FindPane(nID));
  1048. }
  1049. AFX_INLINE CXTPDockingPane* CXTPDockingPaneManager::GetActivePane() const {
  1050. return m_pActivePane;
  1051. }
  1052. AFX_INLINE CXTPToolTipContext* CXTPDockingPaneManager::GetToolTipContext() const {
  1053. return m_pToolTipContext;
  1054. }
  1055. AFX_INLINE void CXTPDockingPaneManager::ShowCaptionMaximizeButton(BOOL bShowMaximizeButton) {
  1056. m_bShowMaximizeButton = bShowMaximizeButton;
  1057. RedrawPanes();
  1058. }
  1059. AFX_INLINE BOOL CXTPDockingPaneManager::IsCaptionMaximizeButtonsVisible() const {
  1060. return m_bShowMaximizeButton;
  1061. }
  1062. AFX_INLINE void CXTPDockingPaneManager::SetDockingContextStickerStyle(XTPDockingContextStickerStyle style) {
  1063. m_nDockingContextStickerStyle = style;
  1064. }
  1065. AFX_INLINE XTPDockingContextStickerStyle CXTPDockingPaneManager::GetDockingContextStickerStyle() const {
  1066. return m_nDockingContextStickerStyle;
  1067. }
  1068. AFX_INLINE void CXTPDockingPaneManager::SetCaptionDirection(XTPDockingPaneCaptionDirection captionDirection) {
  1069. m_captionDirection = captionDirection;
  1070. RedrawPanes();
  1071. }
  1072. AFX_INLINE XTPDockingPaneCaptionDirection CXTPDockingPaneManager::GetCaptionDirection() const {
  1073. return m_captionDirection;
  1074. }
  1075. AFX_INLINE void CXTPDockingPaneManager::SetShowContentsWhileDragging(BOOL bShow) {
  1076. m_bShowContentsWhileDragging = bShow;
  1077. }
  1078. AFX_INLINE BOOL CXTPDockingPaneManager::GetShowContentsWhileDragging() const {
  1079. return m_bShowContentsWhileDragging;
  1080. }
  1081. AFX_INLINE void CXTPDockingPaneManager::SetClientMargin(int nMargin) {
  1082. if (m_nClientMargin != nMargin) {
  1083. m_nClientMargin = nMargin;
  1084. RecalcFrameLayout(NULL, TRUE);
  1085. }
  1086. }
  1087. AFX_INLINE int CXTPDockingPaneManager::GetClientMargin() const {
  1088. return m_nClientMargin;
  1089. }
  1090. AFX_INLINE void CXTPDockingPaneManager::SetSideDockingMargin(CRect rcMargin) {
  1091. if (m_rcSideDockingMargin != rcMargin) {
  1092. m_rcSideDockingMargin = rcMargin;
  1093. RecalcFrameLayout(NULL, TRUE);
  1094. }
  1095. }
  1096. AFX_INLINE CRect CXTPDockingPaneManager::GetSideDockingMargin() const {
  1097. return m_rcSideDockingMargin;
  1098. }
  1099. AFX_INLINE int CXTPDockingPaneManager::GetFloatingFramesOpacity() const {
  1100. return m_nFloatingFramesOpacity;
  1101. }
  1102. AFX_INLINE BOOL CXTPDockingPaneManager::IsKeyboardNavigateEnabled() const {
  1103. return m_bKeyboardEnabled;
  1104. }
  1105. AFX_INLINE void CXTPDockingPaneManager::SetKeyboardWindowSelectClass(CRuntimeClass* pWindowSelectClass) {
  1106. m_pWindowSelectClass = pWindowSelectClass;
  1107. }
  1108. AFX_INLINE CRuntimeClass* CXTPDockingPaneManager::GetKeyboardWindowSelectClass() const {
  1109. return m_pWindowSelectClass;
  1110. }
  1111. AFX_INLINE void CXTPDockingPaneManager::EnableSideDocking(BOOL bEnable) {
  1112. m_bSideDocking = bEnable;
  1113. }
  1114. AFX_INLINE BOOL CXTPDockingPaneManager::IsSideDockingEnabled() const {
  1115. return m_bSideDocking;
  1116. }
  1117. #endif //#if !defined(__XTPDOCKINGPANEMANAGER_H__)