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

对话框与窗口

开发平台:

Visual C++

  1. // XTPDockingPane.h : interface for the CXTPDockingPane 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(__XTPDOCKINGPANE_H__)
  22. #define __XTPDOCKINGPANE_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. #include "XTPDockingPaneBase.h"
  28. #include "Common/XTPSystemHelpers.h"
  29. class CXTPImageManagerIcon;
  30. //===========================================================================
  31. // Summary:
  32. //     CXTPDockingPane is a CXTPDockingPaneBase derived class.
  33. //     It is used as a container for a user window.
  34. //===========================================================================
  35. class _XTP_EXT_CLASS CXTPDockingPane : public CXTPCmdTarget, public CXTPDockingPaneBase, public CXTPAccessible
  36. {
  37. protected:
  38. //-----------------------------------------------------------------------
  39. // Summary:
  40. //     Constructs a CXTPDockingPane object
  41. //     Protected constructor. Use CXTPDockingPaneManager::CreatePane() to create it.
  42. // Parameters:
  43. //     pLayout - Points to a CXTPDockingPaneLayout object
  44. //-----------------------------------------------------------------------
  45. CXTPDockingPane(CXTPDockingPaneLayout* pLayout);
  46. //-----------------------------------------------------------------------
  47. // Summary:
  48. //     Destroys a CXTPDockingPane object, handles cleanup and deallocation.
  49. //-----------------------------------------------------------------------
  50. virtual ~CXTPDockingPane();
  51. public:
  52. //-----------------------------------------------------------------------
  53. // Summary:
  54. //     Call this member to set a title for this object.
  55. // Parameters:
  56. //     lpszTitle - Title to be set.
  57. //-----------------------------------------------------------------------
  58. void SetTitle(LPCTSTR lpszTitle);
  59. //-----------------------------------------------------------------------
  60. // Summary:
  61. //     Call this member to set the focus of the pane.
  62. //-----------------------------------------------------------------------
  63. virtual void SetFocus();
  64. //-----------------------------------------------------------------------
  65. // Summary:
  66. //     Call this member to get pane's identifier.
  67. // Returns:
  68. //     The identifier of the pane.
  69. //-----------------------------------------------------------------------
  70. int GetID() const;
  71. //-----------------------------------------------------------------------
  72. // Summary:
  73. //     Call this member to get the title of the pane.
  74. // Returns:
  75. //     The title of the pane.
  76. //-----------------------------------------------------------------------
  77. virtual CString GetTitle() const;
  78. //-----------------------------------------------------------------------
  79. // Summary:
  80. //     Call this member to get the short title of the pane.
  81. // Returns:
  82. //     The short title of the pane.
  83. //-----------------------------------------------------------------------
  84. virtual CString GetShortTitle() const;
  85. //-----------------------------------------------------------------------
  86. // Summary:
  87. //     Call this member to close the pane.
  88. //-----------------------------------------------------------------------
  89. void Close();
  90. //-----------------------------------------------------------------------
  91. // Summary:
  92. //     Call this member to hide the pane.
  93. //-----------------------------------------------------------------------
  94. void Hide();
  95. //-----------------------------------------------------------------------
  96. // Summary:
  97. //     Call this member to check if the pane is associated with a user window.
  98. // Returns:
  99. //     TRUE if the pane is associated with a user window.
  100. //-----------------------------------------------------------------------
  101. BOOL IsValid() const;
  102. //-----------------------------------------------------------------------
  103. // Summary:
  104. //     Call this member to check if the pane is closed.
  105. // Returns:
  106. //     TRUE if the pane is closed.
  107. //-----------------------------------------------------------------------
  108. BOOL IsClosed() const;
  109. //-----------------------------------------------------------------------
  110. // Summary:
  111. //     Call this member to check if the pane is hidden.
  112. // Returns:
  113. //     TRUE if the pane is hidden.
  114. //-----------------------------------------------------------------------
  115. BOOL IsHidden() const;
  116. //-----------------------------------------------------------------------
  117. // Summary:
  118. //     Call this member to check if the pane is selected.
  119. // Returns:
  120. //     TRUE if the pane is selected.
  121. //-----------------------------------------------------------------------
  122. BOOL IsSelected() const;
  123. //-----------------------------------------------------------------------
  124. // Summary:
  125. //     Call this member to check if the pane is floating.
  126. // Returns:
  127. //     TRUE if the pane is floating.
  128. //-----------------------------------------------------------------------
  129. BOOL IsFloating() const;
  130. //-----------------------------------------------------------------------
  131. // Summary:
  132. //     Call this member to associate the pane with a user window.
  133. // Parameters:
  134. //     pWnd - Pointer to a user window.
  135. // Remarks:
  136. //     The best place to create a user window and associate it with a
  137. //     pane is after the pane becomes visible. To catch this event use
  138. //     the XTPWM_DOCKINGPANE_NOTIFY Handler.
  139. //-----------------------------------------------------------------------
  140. void Attach(CWnd* pWnd);
  141. //-----------------------------------------------------------------------
  142. // Summary:
  143. //     This member function dynamically creates a view based on a CRuntimeClass
  144. //     object and attaches it to the pane.
  145. // Parameters:
  146. //     pParentWnd - Points to the parent of the view to be created. The parent must be
  147. //                  valid.
  148. //     pViewClass - CView runtime class.
  149. //     pDocument  - CDocument associated with the view. It can be NULL.
  150. //     pContext   - Create context for the view. It can be NULL.
  151. // Remarks:
  152. //     The best place to create a user window and associate it with a
  153. //     pane is after the pane becomes visible. To catch this event, use
  154. //     the XTPWM_DOCKINGPANE_NOTIFY Handler.
  155. // Returns:
  156. //     A CWnd* pointer to the newly created view if successful,
  157. //     otherwise returns NULL.
  158. //-----------------------------------------------------------------------
  159. CWnd* AttachView(CWnd* pParentWnd, CRuntimeClass *pViewClass, CDocument *pDocument = NULL, CCreateContext* pContext = NULL);
  160. //-----------------------------------------------------------------------
  161. // Summary:
  162. //     Call this member to disassociate the pane from a user window.
  163. //-----------------------------------------------------------------------
  164. void Detach();
  165. //-----------------------------------------------------------------------
  166. // Summary:
  167. //     Call this member to select the pane.
  168. //-----------------------------------------------------------------------
  169. void Select();
  170. //-----------------------------------------------------------------------
  171. // Summary:
  172. //     Returns identifier of icon if set, otherwise returns pane's identifier
  173. // Returns:
  174. //     The identifier of the icon if set, otherwise returns the identifier
  175. //     of the pane
  176. //-----------------------------------------------------------------------
  177. int GetIconID() const;
  178. //-----------------------------------------------------------------------
  179. // Summary:
  180. //     Retrieves icon associated with the pane.
  181. // Parameters:
  182. //     nWidth - Width of the icon to retrieve.
  183. // Returns:
  184. //     Handle of the icon.
  185. //-----------------------------------------------------------------------
  186. virtual CXTPImageManagerIcon* GetIcon(int nWidth = 16) const;
  187. //-----------------------------------------------------------------------
  188. // Summary:
  189. //     Call this member to set the identifier of the icon.
  190. // Parameters:
  191. //     nID - Identifier of the icon
  192. //-----------------------------------------------------------------------
  193. void SetIconID(UINT nID);
  194. //-----------------------------------------------------------------------
  195. // Summary:
  196. //     Call this member to get the associated user window.
  197. // Returns:
  198. //     Pointer to the associated user child window.
  199. //-----------------------------------------------------------------------
  200. CWnd* GetChild() const;
  201. //-----------------------------------------------------------------------
  202. // Summary:
  203. //     Call this member to set options of the pane.
  204. // Parameters:
  205. //     dwOptions - Options to be set. Can be any of the values listed in the Remarks section.
  206. // Remarks:
  207. //     dwOptions parameter can be one or more of the following:
  208. //     * <b>xtpPaneNoCloseable</b> Indicates the pane can't be closed.
  209. //     * <b>xtpPaneNoHideable</b> Indicates the pane can't be hidden.
  210. //     * <b>xtpPaneNoFloatable</b> Indicates the pane can't be floated.
  211. //     * <b>xtpPaneNoCaption</b> Indicates the pane has no caption.
  212. //     * <b>xtpPaneHasMenuButton</b> Indicates the pane has menu button.
  213. //     * <b>xtpPaneNoDockable</b> Indicates the pane can't be docked.
  214. // See Also XTPDockingPaneOptions
  215. //-----------------------------------------------------------------------
  216. void SetOptions(DWORD dwOptions);
  217. //-----------------------------------------------------------------------
  218. // Summary:
  219. //     Call this member to get the options of the pane.
  220. // Returns:
  221. //     The pane's data
  222. // See Also: XTPDockingPaneOptions
  223. //-----------------------------------------------------------------------
  224. DWORD GetOptions() const;
  225. //-----------------------------------------------------------------------
  226. // Summary:
  227. //     Call this method to set the 32-bit value associated with the pane
  228. // Parameters:
  229. //     dwData - Contains the new value to associate with the pane
  230. // See Also: GetPaneData
  231. //-----------------------------------------------------------------------
  232. void SetPaneData(DWORD_PTR dwData);
  233. //-----------------------------------------------------------------------
  234. // Summary:
  235. //     This method retrieves the application-supplied 32-bit value
  236. //     associated with the tab item.
  237. // Returns:
  238. //     The 32-bit value associated with the pane
  239. // See Also: SetPaneData
  240. //-----------------------------------------------------------------------
  241. DWORD_PTR GetPaneData() const;
  242. //-----------------------------------------------------------------------
  243. // Summary:
  244. //     This member function returns the RGB value for the referenced
  245. //     item tab color or (COLORREF)-1, if the color was not set.
  246. // Returns:
  247. //     The RGB value for the referenced item tab color, or (COLORREF)-1,
  248. //     if the color was not set.
  249. //-----------------------------------------------------------------------
  250. virtual COLORREF GetItemColor() const;
  251. //-----------------------------------------------------------------------
  252. // Summary:
  253. //     Call this member to set the RGB value for the ite tab.
  254. // Parameters:
  255. //     clr - Color of the item tab.
  256. //-----------------------------------------------------------------------
  257. void SetItemColor(COLORREF clr);
  258. //-----------------------------------------------------------------------
  259. // Summary:
  260. //     Call this member to fill the pMinMaxInfo structure with the
  261. //     minimum and maximum width and height of the container.
  262. //     This will look at the MinMaxInfo for each pane in the
  263. //     container and set the appropriate minimum and maximum width
  264. //     and height for the container.
  265. // Parameters:
  266. //     pMinMaxInfo - Pointer to MINMAXINFO structure
  267. //-----------------------------------------------------------------------
  268. virtual void GetMinMaxInfo(LPMINMAXINFO pMinMaxInfo) const;
  269. //-----------------------------------------------------------------------
  270. // Summary:
  271. //     Retrieves the state of the child window.
  272. // Returns:
  273. //     TRUE if child window is focused.
  274. //-----------------------------------------------------------------------
  275. BOOL IsFocus() const;
  276. //-----------------------------------------------------------------------
  277. // Summary:
  278. //     Call this method to set minimum size of pane.
  279. // Parameters:
  280. //     sz - Minimum size of pane to set
  281. //-----------------------------------------------------------------------
  282. CSize SetMinTrackSize(CSize sz);
  283. //-----------------------------------------------------------------------
  284. // Summary:
  285. //     Call this method to set maximum size of pane.
  286. // Parameters:
  287. //     sz - Maximum size of pane to set
  288. //-----------------------------------------------------------------------
  289. CSize SetMaxTrackSize(CSize sz);
  290. //-----------------------------------------------------------------------
  291. // Summary:
  292. //     Sets a context-sensitive help ID for the child pane
  293. // Parameters:
  294. //     nIDR - Specifies the context-sensitive help ID.
  295. //-----------------------------------------------------------------------
  296. void SetHelpID(int nIDR);
  297. //-----------------------------------------------------------------------
  298. // Summary:
  299. //     Call this member function to retrieve the parent frame window
  300. // Remarks:
  301. //     The member function searches up the parent chain until a CFrameWnd
  302. //     (or derived class) object is found.
  303. // Returns:
  304. //     A pointer to a frame window if successful; otherwise NULL
  305. //-----------------------------------------------------------------------
  306. CFrameWnd* GetParentFrame() const;
  307. //-----------------------------------------------------------------------
  308. // Summary:
  309. //     Call this member function to retrieve the parent window for the pane
  310. // Returns:
  311. //     A pointer to a parent window if successful; otherwise NULL
  312. //-----------------------------------------------------------------------
  313. CWnd* GetDockingSite() const;
  314. //-----------------------------------------------------------------------
  315. // Summary:
  316. //     Determines if pane is enabled
  317. // Returns:
  318. //     TRUE if pane is enabled
  319. //-----------------------------------------------------------------------
  320. XTPXTPDockingPaneEnableOptions GetEnabled() const;
  321. //-----------------------------------------------------------------------
  322. // Summary:
  323. //     Call this method to disable/enable the pane
  324. // Parameters:
  325. //     bEnabled - TRUE to enable pane; FALSE to disable
  326. //-----------------------------------------------------------------------
  327. void SetEnabled(XTPXTPDockingPaneEnableOptions bEnabled);
  328. protected:
  329. //-----------------------------------------------------------------------
  330. // Summary:
  331. //     Copies self data from another pane
  332. // Parameters:
  333. //     pClone  - Pane which members need to copy.
  334. // See Also: Clone
  335. //-----------------------------------------------------------------------
  336. virtual void Copy(CXTPDockingPane* pPane);
  337. //-----------------------------------------------------------------------
  338. // Summary:
  339. //     This method is called to set the position of the pane
  340. // Parameters:
  341. //     pParent - Points to a CWnd object.
  342. //     rect    - Rectangle of the pane to be set.
  343. //     lParam  - Pointer to AFX_SIZEPARENTPARAMS structure.
  344. // ----------------------------------------------------------------------
  345. virtual void OnSizeParent(CWnd* pParent, CRect rect, LPVOID lParam);
  346. //-----------------------------------------------------------------------
  347. // Summary:
  348. //     Call this method to set the parent container of the pane.
  349. // Parameters:
  350. //     pContainer - Points to a CXTPDockingPaneBase object.
  351. //-----------------------------------------------------------------------
  352. virtual void SetParentContainer(CXTPDockingPaneBase* pContainer);
  353. //-----------------------------------------------------------------------
  354. // Summary:
  355. //     Call this member function to save/restore the settings of the pane.
  356. // Parameters:
  357. //     pPX - Points to a CXTPPropExchange object.
  358. // Returns:
  359. //     TRUE if successful; otherwise returns FALSE.
  360. //-----------------------------------------------------------------------
  361. virtual BOOL DoPropExchange(CXTPPropExchange* pPX);
  362. //-----------------------------------------------------------------------
  363. // Summary:
  364. //     Sets the visibility state of the window.
  365. // Parameters:
  366. //     bShow - TRUE to show the window, or FALSE to hide it.
  367. //-----------------------------------------------------------------------
  368. void ShowWindow(BOOL bShow);
  369. //-----------------------------------------------------------------------
  370. // Summary:
  371. //     Call this member to set the identifier of the item.
  372. // Parameters:
  373. //     nID - Identifier of the item.
  374. //-----------------------------------------------------------------------
  375. void SetID(int nID);
  376. //-----------------------------------------------------------------------
  377. // Summary:
  378. //     Call this member to set the bounding rectangle
  379. // Parameters:
  380. //     rc - Bounding rectangle to draw.
  381. //-----------------------------------------------------------------------
  382. void SetWindowRect(CRect rc);
  383. //-----------------------------------------------------------------------
  384. // Summary:
  385. //     This method is called to destroy pane
  386. //-----------------------------------------------------------------------
  387. virtual void DeletePane();
  388. private:
  389. virtual void Copy(CXTPDockingPaneBase* pClone, CXTPPaneToPaneMap* pMap, DWORD dwIgnoredOptions);
  390. protected:
  391. //{{AFX_CODEJOCK_PRIVATE
  392. virtual HRESULT GetAccessibleParent(IDispatch** ppdispParent);
  393. virtual HRESULT GetAccessibleDescription(VARIANT varChild, BSTR* pszDescription);
  394. virtual HRESULT GetAccessibleChildCount(long* pcountChildren);
  395. virtual HRESULT GetAccessibleChild(VARIANT varChild, IDispatch** ppdispChild);
  396. virtual HRESULT GetAccessibleName(VARIANT varChild, BSTR* pszName);
  397. virtual HRESULT GetAccessibleRole(VARIANT varChild, VARIANT* pvarRole);
  398. virtual HRESULT AccessibleLocation(long *pxLeft, long *pyTop, long *pcxWidth, long* pcyHeight, VARIANT varChild);
  399. virtual HRESULT AccessibleHitTest(long xLeft, long yTop, VARIANT* pvarChild);
  400. virtual HRESULT GetAccessibleState(VARIANT varChild, VARIANT* pvarState);
  401. virtual CCmdTarget* GetAccessible();
  402. virtual HRESULT GetAccessibleDefaultAction(VARIANT varChild, BSTR* pszDefaultAction);
  403. virtual HRESULT AccessibleDoDefaultAction(VARIANT varChild);
  404. virtual HRESULT AccessibleSelect(long flagsSelect, VARIANT varChild);
  405. DECLARE_INTERFACE_MAP()
  406. //}}AFX_CODEJOCK_PRIVATE
  407. protected:
  408. HWND m_hwndChild;             // Child window handle
  409. int m_nID;                   // Pane identifier
  410. int m_nIconID;                // Icon identifier
  411. CString m_strTitle;           // Caption of the pane
  412. DWORD m_dwOptions;            // Options of the pane. See XTPDockingPaneOptions
  413. DWORD_PTR m_dwData;           // User item data
  414. CPoint m_ptMinTrackSize;      // Minimum pane size.
  415. CPoint m_ptMaxTrackSize;      // Maximum pane size.
  416. COLORREF m_clrItemTab;        // Color used to fill the docking pane tab buttons.
  417. int m_nIDHelp;                // Context-sensitive help ID for a child pane
  418. XTPXTPDockingPaneEnableOptions m_bEnabled;          // Pane enabled options
  419. private:
  420. friend class CXTPDockingPaneMiniWnd;
  421. friend class CXTPDockingPaneManager;
  422. friend class CXTPDockingPaneTabbedContainer;
  423. friend class CXTPDockingPaneLayout;
  424. friend class CDockingPaneCtrl;
  425. };
  426. AFX_INLINE int  CXTPDockingPane::GetID() const {
  427. return m_nID;
  428. }
  429. AFX_INLINE int CXTPDockingPane::GetIconID() const {
  430. return m_nIconID == -1 ? m_nID : m_nIconID;
  431. }
  432. AFX_INLINE void CXTPDockingPane::SetIconID(UINT nID) {
  433. m_nIconID = nID;
  434. }
  435. AFX_INLINE CWnd* CXTPDockingPane::GetChild() const {
  436. return m_hwndChild ? CWnd ::FromHandle(m_hwndChild): NULL;
  437. }
  438. AFX_INLINE void CXTPDockingPane::SetOptions(DWORD dwOptions) {
  439. m_dwOptions = dwOptions;
  440. }
  441. AFX_INLINE DWORD_PTR CXTPDockingPane::GetPaneData() const {
  442. return m_dwData;
  443. }
  444. AFX_INLINE void CXTPDockingPane::SetPaneData(DWORD_PTR dwData) {
  445. m_dwData = dwData;
  446. }
  447. AFX_INLINE CSize CXTPDockingPane::SetMinTrackSize(CSize sz) {
  448. CSize szMinTrackSize(m_ptMinTrackSize);
  449. m_ptMinTrackSize = CPoint(sz);
  450. return szMinTrackSize;
  451. }
  452. AFX_INLINE CSize CXTPDockingPane::SetMaxTrackSize(CSize sz) {
  453. CSize szMaxTrackSize(m_ptMaxTrackSize);
  454. m_ptMaxTrackSize = CPoint(sz);
  455. return szMaxTrackSize;
  456. }
  457. AFX_INLINE void CXTPDockingPane::SetHelpID(int nIDR) {
  458. m_nIDHelp = nIDR;
  459. }
  460. #endif // #if !defined(__XTPDOCKINGPANE_H__)