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

对话框与窗口

开发平台:

Visual C++

  1. // XTPTabManager.h: interface for the CXTPTabManager class.
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO 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(__XTPTABMANAGER_H__)
  22. #define __XTPTABMANAGER_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "XTPTabPaintManager.h"
  28. //-----------------------------------------------------------------------
  29. // Summary:
  30. //     The WM_XTP_GETTABCOLOR message is sent to MDI child window to retrieve color will be used for
  31. //     tabbed interface with enabled OneNote colors.
  32. // Remarks:
  33. //     You can override CXTPTabClientWnd::GetItemColor instead of process the message.
  34. // Returns:
  35. //     COLORREF of color to be used.
  36. // Example:
  37. //     Here is an example of how an application would process the WM_XTP_GETTABCOLOR
  38. //     message.
  39. // <code>
  40. // BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWnd)
  41. //     //{{AFX_MSG_MAP(CChildFrame)
  42. //     ON_MESSAGE(WM_XTP_GETTABCOLOR, OnGetTabColor)
  43. //     //}}AFX_MSG_MAP
  44. // END_MESSAGE_MAP()
  45. //
  46. // LRESULT CChildFrame::OnGetTabColor(WPARAM /*wParam*/, LPARAM /*lParam*/)
  47. // {
  48. //     return CXTPTabPaintManager::GetOneNoteColor(xtpTabColorOrange);
  49. // }
  50. // </code>
  51. // See Also: CXTPTabPaintManager::GetOneNoteColor, CXTPTabClientWnd, WM_XTP_GETWINDOWTEXT, WM_XTP_GETTABICON, WM_XTP_GETWINDOWTOOLTIP
  52. //-----------------------------------------------------------------------
  53. const UINT WM_XTP_GETTABCOLOR = (WM_USER + 9400 + 1);
  54. class CXTPTabManager;
  55. class CXTPTabPaintManager;
  56. class CXTPImageManagerIcon;
  57. class CXTPMarkupContext;
  58. class CXTPMarkupUIElement;
  59. //===========================================================================
  60. // Summary:
  61. //     CXTPTabManagerNavigateButton is a class used to represent the
  62. //     tab navigation buttons.
  63. // Remarks:
  64. //     Navigation button are the buttons that appear in the tab header
  65. //     area.  The buttons include the left arrow, right arrow, and close
  66. //     buttons.  Any combination of these buttons can be shown.  You
  67. //     can choose to never display then, always display them, or
  68. //     automatically display them.  If yo automatically display the buttons,
  69. //     they are only displayed when needed.  I.e, When there are too many
  70. //     tabs to display in the tab header, the arrow buttons appear.
  71. //
  72. //          By default these all these buttons are displayed in the
  73. //          CommandBars TabWorkSpace.  You will need to add them to the
  74. //          TabControl.
  75. //
  76. //          If the xtpTabNavigateButtonAutomatic flag is used, then the button
  77. //          will appear only when needed.  I.e. When the XTPTabLayoutStyle is
  78. //          set to xtpTabLayoutAutoSize, all tab might not fit in the tab header
  79. //          area.  When there are more tabs than can fit in the header, the
  80. //          button will automatically be displayed.
  81. //
  82. // Example:
  83. //     This example code illustrates how to specify when the tab navigation
  84. //     buttons are displayed.
  85. // <code>
  86. // //Finds the left navigation button and specifies that it is always displayed
  87. // m_wndTabControl.FindNavigateButton(xtpTabNavigateButtonLeft)->SetFlags(xtpTabNavigateButtonAlways);
  88. // //Finds the right navigation button and specifies that it is never displayed
  89. // m_wndTabControl.FindNavigateButton(xtpTabNavigateButtonRight)->SetFlags(xtpTabNavigateButtonNone);
  90. // //Finds the close navigation button and specifies that it is always displayed
  91. // m_wndTabControl.FindNavigateButton(xtpTabNavigateButtonClose)->SetFlags(xtpTabNavigateButtonAlways);
  92. //
  93. // //Called to recalculate tab area and reposition components
  94. // Reposition();
  95. // </code>
  96. // See Also: XTPTabNavigateButtonFlags, CXTPTabManager::FindNavigateButton
  97. //===========================================================================
  98. class _XTP_EXT_CLASS CXTPTabManagerNavigateButton
  99. {
  100. public:
  101. //-----------------------------------------------------------------------
  102. // Summary:
  103. //     Constructs a CXTPTabManagerNavigateButton object.
  104. // Parameters:
  105. //     pManager - CXTPTabManager object to draw the button on.
  106. //     nID      - Id of the button, can be one of the values listed in the
  107. //                Remarks section.
  108. //     dwFlags  - Indicates when to display the button.
  109. // Remarks:
  110. //     Standard ids of buttons are listed below:
  111. //     * <b>xtpTabNavigateButtonLeft</b>  Left tab navigation button.
  112. //     * <b>xtpTabNavigateButtonRight</b> Right tab navigation button.
  113. //     * <b>xtpTabNavigateButtonClose</b> Close tab navigation button.
  114. // See also:
  115. //     CXTPTabManager::FindNavigateButton, XTPTabNavigateButtonFlags,
  116. //     XTPTabNavigateButton
  117. //-----------------------------------------------------------------------
  118. CXTPTabManagerNavigateButton(CXTPTabManager* pManager, UINT nID, XTPTabNavigateButtonFlags dwFlags);
  119. //-----------------------------------------------------------------------
  120. // Summary:
  121. //     Destroys a CXTPTabManagerNavigateButton object, handles cleanup and deallocation
  122. //-----------------------------------------------------------------------
  123. virtual ~CXTPTabManagerNavigateButton();
  124. //-----------------------------------------------------------------------
  125. // Summary:
  126. //     Call this member to adjust the width of the tab header area.
  127. //     This will subtract the width of the navigate button from
  128. //     the width of the tab header area supplied.
  129. // Parameters:
  130. //     nWidth - Width of the tab header area.
  131. //
  132. // Remarks:
  133. //     The width will only be adjusted if the xtpTabNavigateButtonAlways
  134. //     is set.  If the tabs are vertical, then the height of the buttons
  135. //     are subtracted from the tab header area.
  136. //-----------------------------------------------------------------------
  137. virtual void AdjustWidth(int& nWidth);
  138. //-----------------------------------------------------------------------
  139. // Summary:
  140. //     Call this member to specify when the navigation button is displayed.
  141. // Parameters:
  142. //     dwFlags - Indicates when to display the button.
  143. // See Also: XTPTabNavigateButtonFlags, CXTPTabManager::FindNavigateButton, GetFlags
  144. //-----------------------------------------------------------------------
  145. void SetFlags(XTPTabNavigateButtonFlags dwFlags);
  146. //-----------------------------------------------------------------------
  147. // Summary:
  148. //     Call this member to determine when the navigation button is displayed.
  149. // Returns:
  150. //     XTPTabNavigateButtonFlags indicating when the navigation
  151. //     button is displayed.
  152. // See Also: XTPTabNavigateButtonFlags, CXTPTabManager::FindNavigateButton, SetFlags
  153. //-----------------------------------------------------------------------
  154. XTPTabNavigateButtonFlags GetFlags() const;
  155. //-----------------------------------------------------------------------
  156. // Summary:
  157. //     Call this member to retrieve size of the button.
  158. // See Also: GetRect
  159. //-----------------------------------------------------------------------
  160. virtual CSize GetSize() const;
  161. //-----------------------------------------------------------------------
  162. // Summary:
  163. //     Call this member to get parent Item of the button.
  164. //-----------------------------------------------------------------------
  165. CXTPTabManagerItem* GetItem() const;
  166. //-----------------------------------------------------------------------
  167. // Summary:
  168. //     Call this member to draw the navigation button in the tab
  169. //     header area.
  170. // Parameters:
  171. //     pDC - Pointer to a valid device context.
  172. //-----------------------------------------------------------------------
  173. void Draw(CDC* pDC);
  174. //-----------------------------------------------------------------------
  175. // Summary:
  176. //     This member is called when the user presses the left mouse button.
  177. // Parameters:
  178. //     hWnd - Handle to the CWnd object beneath the mouse cursor.
  179. //     pt   - Specifies the x- and y-coordinate of the cursor. These
  180. //            coordinates are always relative to the upper-left
  181. //            corner of the window.
  182. // Remarks:
  183. //     When the user clicks on a tab navigation button,
  184. //     CXTPTabManagerNavigateButton::PerformClick will call the OnExecute
  185. //     member, the OnExecute member will then call the
  186. //     CXTPTabManager::OnNavigateButtonClick member passing in the ID
  187. //     of the tab navigation button that was pressed.
  188. //
  189. //          This member performs the common operations of when a button
  190. //          is clicked such as drawing the "pressed" button and calling
  191. //          the OnExecute function of the clicked tab navigation button.
  192. //
  193. // See Also: CXTPTabManager::OnNavigateButtonClick
  194. //-----------------------------------------------------------------------
  195. virtual void PerformClick(HWND hWnd, CPoint pt);
  196. //-----------------------------------------------------------------------
  197. // Summary:
  198. //     Call this member to determine if the navigation button is enabled.
  199. // Returns:
  200. //     TRUE if the navigation button is enabled, FALSE if it is disabled.
  201. //-----------------------------------------------------------------------
  202. BOOL IsEnabled() const;
  203. //-----------------------------------------------------------------------
  204. // Summary:
  205. //     This member is called to determine if the navigation button
  206. //     is currently pressed.
  207. // Returns:
  208. //     TRUE if the navigation button is currently pressed.
  209. // Remarks:
  210. //     This member is used in the CColorSetDefault::FillNavigateButton
  211. //     function and all other objects derived from CColorSetDefault to
  212. //     determine how to colorize the button.
  213. // See Also: CColorSetDefault::FillNavigateButton
  214. //-----------------------------------------------------------------------
  215. BOOL IsPressed() const;
  216. //-----------------------------------------------------------------------
  217. // Summary:
  218. //     This member is called to determine if the navigation button
  219. //     is currently highlighted.  This occurs when the mouse cursor
  220. //     is positioned over the navigation button.
  221. // Remarks:
  222. //     This member is used in the CColorSetDefault::FillNavigateButton
  223. //     function and all other objects derived from CColorSetDefault to
  224. //     determine how to colorize the button.
  225. // Returns:
  226. //     TRUE if the navigation button is currently highlighted.
  227. // See Also: CColorSetDefault::FillNavigateButton
  228. //-----------------------------------------------------------------------
  229. BOOL IsHighlighted() const;
  230. //-----------------------------------------------------------------------
  231. // Summary:
  232. //     Call this member to determine if the navigation button is
  233. //     currently visible.
  234. // Returns:
  235. //     TRUE if the navigation button is currently visible, FALSE
  236. //     otherwise.
  237. //-----------------------------------------------------------------------
  238. BOOL IsVisible() const;
  239. //-----------------------------------------------------------------------
  240. // Summary:
  241. //     Call this member to get the bounding rectangle of the
  242. //     navigation button.
  243. // Returns:
  244. //     Bounding rectangle of navigation button.
  245. //-----------------------------------------------------------------------
  246. CRect GetRect() const;
  247. //-----------------------------------------------------------------------
  248. // Summary:
  249. //     This member is called to set bounding rectangle of the
  250. //     navigation button.
  251. // Parameters:
  252. //     rcButton - Bounding rectangle of navigation button to set.
  253. //-----------------------------------------------------------------------
  254. void SetRect(CRect rcButton);
  255. //-----------------------------------------------------------------------
  256. // Summary:
  257. //     Call this method to get identifier of the button
  258. // Returns:
  259. //     Identifier of the button
  260. // Remarks:
  261. //     See XTPTabNavigateButton for list of standard identifiers
  262. // See Also:
  263. //     XTPTabNavigateButton
  264. //-----------------------------------------------------------------------
  265. UINT GetID() const;
  266. //-----------------------------------------------------------------------
  267. // Summary:
  268. //     This method is called to update self position.
  269. // Parameters:
  270. //     rcNavigateButtons - Bounding rectangle of the tab navigation
  271. //                         buttons.
  272. //-----------------------------------------------------------------------
  273. virtual void Reposition(CRect& rcNavigateButtons);
  274. //-----------------------------------------------------------------------
  275. // Summary:
  276. //     Call this member to set the tooltip for this button.  This is the
  277. //     text that will be displayed when the mouse pointer is positioned
  278. //     over the button.
  279. // Parameters: lpszTooltip - Tooltip to set for this button.
  280. // See Also: GetTooltip
  281. //-----------------------------------------------------------------------
  282. void SetTooltip(LPCTSTR lpszTooltip);
  283. //-----------------------------------------------------------------------
  284. // Summary:
  285. //     Call this member to get the tooltip displayed when the mouse
  286. //     pointer is positioned over the button.
  287. // Returns:
  288. //     The tooltip displayed when the mouse if over the button.
  289. // See Also: SetTooltip
  290. //-----------------------------------------------------------------------
  291. CString GetTooltip() const;
  292. //-----------------------------------------------------------------------
  293. // Summary:
  294. //     This member is called to draw a symbol in the tab navigation
  295. //     button. I.e. "<", ">" or "x".  This member must be overridden in
  296. //     derived classes.
  297. // Parameters:
  298. //     pDC - Pointer to a valid device context.
  299. //     rc  - Bounding rectangle of tab navigation button.
  300. //-----------------------------------------------------------------------
  301. virtual void DrawEntry(CDC* pDC, CRect rc) = 0;
  302. //-----------------------------------------------------------------------
  303. // Summary:
  304. //     This member is called when a navigation button is clicked.
  305. // Parameters:
  306. //     bTick - If TRUE, CXTPTabManager::OnNavigateButtonClick will
  307. //             be called passing in the Id of the navigation
  308. //             button that was clicked as a parameter.
  309. //-----------------------------------------------------------------------
  310. virtual void OnExecute(BOOL bTick);
  311. protected:
  312. UINT m_nID;                             // Id of the navigation button.
  313. XTPTabNavigateButtonFlags m_dwFlags;    // Flag that indicates when the navigation button will be drawn.
  314. CXTPTabManager* m_pManager;             // Pointer to the TabManager the navigation buttons are drawn on.
  315. CRect m_rcButton;                       // Bounding rectangle of the navigation button.
  316. BOOL m_bEnabled;                        // TRUE if the navigation button is enables.
  317. BOOL m_bPressed;                        // TRUE if the navigation button is pressedclicked.
  318. CString m_strToolTip;                   // Tooltip for the button.
  319. CXTPTabManagerItem* m_pItem;            // Owner item. NULL if common.
  320. private:
  321. friend class CXTPTabManager;
  322. };
  323. //===========================================================================
  324. // Summary:
  325. //     Navigate buttons array definition
  326. //===========================================================================
  327. typedef CArray<CXTPTabManagerNavigateButton*, CXTPTabManagerNavigateButton*> CXTPTabManagerNavigateButtons;
  328. //===========================================================================
  329. // Summary:
  330. //     CXTPTabManagerItem is a CCmdTarget derived class that represents
  331. //     a tab item.  This is the base class for the tabs that appear
  332. //     in the CommandBars TabWorkSpace, DockingPanes, and TabControl.
  333. //===========================================================================
  334. class _XTP_EXT_CLASS  CXTPTabManagerItem : public CXTPCmdTarget
  335. {
  336. DECLARE_DYNAMIC(CXTPTabManagerItem)
  337. protected:
  338. //-------------------------------------------------------------------------
  339. // Summary:
  340. //     Constructs a CXTPTabManagerItem object.
  341. //-------------------------------------------------------------------------
  342. CXTPTabManagerItem();
  343. //-------------------------------------------------------------------------
  344. // Summary:
  345. //     Destroys a CXTPTabManagerItem object, handles cleanup and deallocation.
  346. //-------------------------------------------------------------------------
  347. ~CXTPTabManagerItem();
  348. public:
  349. //-----------------------------------------------------------------------
  350. // Summary:
  351. //     Call this member to set the text caption that is displayed
  352. //     in this tab's button.
  353. // Parameters:
  354. //     lpszCaption - Text caption of the tab.
  355. // See Also: GetCaption
  356. //-----------------------------------------------------------------------
  357. void SetCaption(LPCTSTR lpszCaption);
  358. //-----------------------------------------------------------------------
  359. // Summary:
  360. //     Call this member to get the text caption to the tab.
  361. // Returns:
  362. //     Text caption of tab.  This is the text displayed in the tab
  363. //     button.
  364. // See Also: SetCaption
  365. //-----------------------------------------------------------------------
  366. CString GetCaption() const;
  367. //-----------------------------------------------------------------------
  368. // Summary:
  369. //     Call this member to set the tooltip for this tab.  This is the
  370. //     text that will be displayed when the mouse pointer is positioned
  371. //     over the tab button.
  372. // Parameters: lpszTooltip - Tooltip to set for this tab.
  373. // See Also: GetTooltip, CXTPTabManager::GetItemTooltip
  374. //-----------------------------------------------------------------------
  375. void SetTooltip(LPCTSTR lpszTooltip);
  376. //-----------------------------------------------------------------------
  377. // Summary:
  378. //     Call this member to get the tooltip displayed when the mouse
  379. //     pointer is positioned over the tab button.
  380. // Returns:
  381. //     The tooltip displayed when the mouse if over the tab button.
  382. // See Also: SetTooltip, CXTPTabManager::GetItemTooltip
  383. //-----------------------------------------------------------------------
  384. CString GetTooltip() const;
  385. //-----------------------------------------------------------------------
  386. // Summary:
  387. //     Call this member to retrieve the color of the tab button.
  388. // Returns:
  389. //     The color of the tab button.
  390. // See Also: SetColor, CXTPTabManager::GetItemColor
  391. //-----------------------------------------------------------------------
  392. COLORREF GetColor();
  393. //-----------------------------------------------------------------------
  394. // Summary:
  395. //     Call this member to set the color of the tab button.
  396. // Parameters:   clr - New color of the tab button.
  397. // Remarks:
  398. //     After the new color is set, CXTPTabManager::RedrawControl is
  399. //     called.
  400. // See Also: GetColor, CXTPTabManager::GetItemColor
  401. //-----------------------------------------------------------------------
  402. void SetColor(COLORREF clr);
  403. //-----------------------------------------------------------------------
  404. // Summary:
  405. //     Call this member to get the bounding rectangle of the tab
  406. //     button.
  407. // Returns:
  408. //     Bounding rectangle of the tab button.
  409. // See Also: SetRect
  410. //-----------------------------------------------------------------------
  411. CRect GetRect() const;
  412. //-----------------------------------------------------------------------
  413. // Summary:
  414. //     Call this member to get the width of the tab button.
  415. // Returns:
  416. //     Width of the tab button.
  417. // Remarks:
  418. //     The width might change depending on the tab layout and
  419. //     position of the tabs.
  420. // See Also: XTPTabLayoutStyle, XTPTabPosition
  421. //-----------------------------------------------------------------------
  422. int GetButtonLength() const;
  423. //-----------------------------------------------------------------------
  424. // Summary:
  425. //     Call this member to get the width of the content.
  426. // Returns:
  427. //     Width of the content of the button.
  428. // Remarks:
  429. //     The width might change depending on the tab layout and
  430. //     position of the tabs.
  431. // See Also: XTPTabLayoutStyle, XTPTabPosition
  432. //-----------------------------------------------------------------------
  433. int GetContentLength() const;
  434. //-----------------------------------------------------------------------
  435. // Summary:
  436. //     Call this member to get the index of the tab within the
  437. //     collection of tabs.
  438. // Returns:
  439. //     Index of tab.
  440. // See Also: CXTPTabManager::GetItem, CXTPTabManager
  441. //-----------------------------------------------------------------------
  442. int GetIndex() const;
  443. //-----------------------------------------------------------------------
  444. // Summary:
  445. //     Call this member to get the image index of the tab.
  446. // Returns:
  447. //     Index of the image displayed in the tab button.  The index is
  448. //     the index of an image within an CXTPImageManager or CImageList
  449. //     object.
  450. // Remarks:
  451. //     This is the index of an image within an CXTPImageManager or CImageList
  452. //     object that will be displayed in the tab button.  CXTPTabManager::ShowIcons
  453. //     is used to hideshow icons.
  454. // See Also: SetImageIndex, CXTPTabControl::InsertItem, CXTPTabControl::GetImageManager,
  455. //           CXTPTabControl::SetImageList, CXTPTabManager::ShowIcons
  456. //-----------------------------------------------------------------------
  457. int GetImageIndex() const;
  458. //-----------------------------------------------------------------------
  459. // Summary:
  460. //     Call this member to set the image index of the tab.
  461. // Parameters: nImage - Index of an image within an CXTPImageManager or CImageList
  462. //                      object that will be displayed in the tab button.
  463. // Remarks:
  464. //     This is the index of an image within an CXTPImageManager or CImageList
  465. //     object that will be displayed in the tab button.  CXTPTabManager::ShowIcons
  466. //     is used to hideshow icons.
  467. // See Also: GetImageIndex, CXTPTabControl::InsertItem, CXTPTabControl::GetImageManager,
  468. //           CXTPTabControl::SetImageList, CXTPTabManager::ShowIcons
  469. //-----------------------------------------------------------------------
  470. void SetImageIndex(int nImage);
  471. //-----------------------------------------------------------------------
  472. // Summary:
  473. //     This method retrieves the application-supplied 32-bit value
  474. //     associated with the tab item.
  475. // Remarks:
  476. //     This returns the "extra" information such as pointers or
  477. //     integers that was associated with the tab item using the SetData
  478. //     function.
  479. //
  480. //          NOTE: Do not use GetData when working with docking pane tabs.
  481. //                With DockingPanes, GetData returns a pointer to a CXTPDockingPane.
  482. //                Use CXTPDockingPane::GetPaneData when working with
  483. //                docking panes.
  484. // Returns:
  485. //     The 32-bit value associated with the tab item.
  486. // See Also: SetData, CXTPDockingPane::SetPaneData, CXTPDockingPane::GetPaneData
  487. //-----------------------------------------------------------------------
  488. DWORD_PTR GetData() const;
  489. //-----------------------------------------------------------------------
  490. // Summary:
  491. //     Call this method to set the 32-bit value associated with the
  492. //     tab item.
  493. // Parameters:
  494. //     dwData - Contains the new value to associate with the tab item.
  495. // Remarks:
  496. //     This allows any "extra" information such as pointers or
  497. //     integers to be associated with the tab item.
  498. //
  499. //          NOTE: Do not use SetData when working with docking pane tabs.
  500. //                For DockingPanes, dwData stores a pointer to a CXTPDockingPane.
  501. //                Use CXTPDockingPane::SetPaneData when working with
  502. //                docking panes.
  503. // See Also: SetData, CXTPDockingPane::SetPaneData
  504. //-----------------------------------------------------------------------
  505. void SetData(DWORD_PTR dwData);
  506. //-----------------------------------------------------------------------
  507. // Summary:
  508. //     Call this member to associate an object with the tab.  This
  509. //     will tell the tab what to display in the tab client area when
  510. //     the tab is selected.
  511. //     I.e. The HWND of a dialog.
  512. // Parameters:   hWnd - HWND of object that should be displayed in this tab
  513. //                      when the tab is selected.
  514. // See Also: GetHandle
  515. //-----------------------------------------------------------------------
  516. void SetHandle(HWND hWnd);
  517. //-----------------------------------------------------------------------
  518. // Summary:
  519. //     Call this member to get the HWND of the object associated
  520. //     with the tab.  This is the HWND of the object that is displayed
  521. //     in the tab client area when the tab is selected.
  522. // Returns:
  523. //     HWND of object associated with the tab.
  524. // See Also: SetHandle
  525. //-----------------------------------------------------------------------
  526. HWND GetHandle() const;
  527. //-----------------------------------------------------------------------
  528. // Summary:
  529. //     Call this member to set the bounding rectangle of the tab.
  530. // Parameters:   rcItem - Bounding rectangle of tab.
  531. // See Also: GetRect
  532. //-----------------------------------------------------------------------
  533. void SetRect(CRect rcItem);
  534. //-----------------------------------------------------------------------
  535. // Summary:
  536. //     Call this member to determine if the tab is visible.
  537. // Returns:
  538. //     TRUE if the tab is visible, FALSE otherwise.
  539. // Remarks:
  540. //     A tab might not be visible because of the tab layout.  You
  541. //     can also use the SetVisible member to hideshow a tab.
  542. // See Also: SetVisible
  543. //-----------------------------------------------------------------------
  544. BOOL IsVisible() const;
  545. //-----------------------------------------------------------------------
  546. // Summary:
  547. //     Call this member to hide or show the tab.
  548. // Parameters: bVisible - TRUE to show the tab, FALSE to hide the tab.
  549. // See Also: IsVisible
  550. //-----------------------------------------------------------------------
  551. virtual void SetVisible(BOOL bVisible);
  552. //-----------------------------------------------------------------------
  553. // Summary:
  554. //     Call this member to determine if the tab is enabled.
  555. // Returns:
  556. //     TRUE if the tab is enabled, FALSE if the tab is disabled.
  557. // See Also: SetEnabled
  558. //-----------------------------------------------------------------------
  559. BOOL IsEnabled() const;
  560. //-----------------------------------------------------------------------
  561. // Summary:
  562. //     Call this member to set whether the tab is enabled.
  563. // Parameters:   bEnabled - TRUE to enable the tab, FALSE to disable the tab.
  564. // Remarks:
  565. //     If FALSE, the tab will appear "grayed out" and the user can
  566. //     not access the tab.
  567. // See Also: IsEnabled
  568. //-----------------------------------------------------------------------
  569. void SetEnabled(BOOL bEnabled);
  570. //-----------------------------------------------------------------------
  571. // Summary:
  572. //     Call this member to get row of the item.
  573. //-----------------------------------------------------------------------
  574. int GetItemRow() const;
  575. //-----------------------------------------------------------------------
  576. // Summary:
  577. //     This method is called to determine if the item was shrinked.
  578. //-----------------------------------------------------------------------
  579. BOOL IsItemShrinked() const;
  580. //-----------------------------------------------------------------------
  581. // Summary:
  582. //     Call this method to get collection of navigate buttons.
  583. // Returns:
  584. //     Array of CXTPTabManagerNavigateButton classes.
  585. // See Also:
  586. //     CXTPTabManagerNavigateButtons, CXTPTabManagerNavigateButton
  587. //-----------------------------------------------------------------------
  588. CXTPTabManagerNavigateButtons* GetNavigateButtons();
  589. public:
  590. //-----------------------------------------------------------------------
  591. // Summary:
  592. //     Call this member to determine it the tab is currently
  593. //     selected.  I.e. when a tab is clicked.
  594. // Returns:
  595. //     TRUE if the tab is currently selected, FALSE otherwise.
  596. //-----------------------------------------------------------------------
  597. BOOL IsSelected() const;
  598. //-----------------------------------------------------------------------
  599. // Summary:
  600. //     Call this member to determine it the tab has focus
  601. // Returns:
  602. //     TRUE if the tab has focus, FALSE otherwise.
  603. //-----------------------------------------------------------------------
  604. BOOL IsFocused() const;
  605. //-----------------------------------------------------------------------
  606. // Summary:
  607. //     Call this method to determine if the tab is highlighted.
  608. // Returns:
  609. //     TRUE if the tab is highlighted (If CXTPTabPaintManager::m_bHotTracking
  610. //     is TRUE), otherwise FALSE.
  611. // Remarks:
  612. //     A tab will be highlighted when CXTPTabPaintManager::m_bHotTracking
  613. //     is TRUE and the mouse pointer is positioned over the tab button.
  614. //     and when dragging a tab.  I.e. Reordering tabs.
  615. // See Also: IsPressed, IsFocused
  616. //-----------------------------------------------------------------------
  617. BOOL IsHighlighted() const;
  618. //-----------------------------------------------------------------------
  619. // Summary:
  620. //    Call this method to determine if the tab is pressed
  621. // Returns:
  622. //     TRUE if the tab is pressed, otherwise FALSE.
  623. // See Also: IsHighlighted
  624. //-----------------------------------------------------------------------
  625. BOOL IsPressed() const;
  626. //-------------------------------------------------------------------------
  627. // Summary:
  628. //     Call this member to delete this tab.
  629. //-------------------------------------------------------------------------
  630. void Remove();
  631. //-------------------------------------------------------------------------
  632. // Summary:
  633. //     Call this member to select this tab.
  634. // Remarks:
  635. //     This will invoke the OnItemClick method.  A tab can also be selected
  636. //     by clicking on the tab.
  637. //-------------------------------------------------------------------------
  638. void Select();
  639. //-----------------------------------------------------------------------
  640. // Summary:
  641. //     Call this member to reorder item.
  642. // Parameters:
  643. //     nIndex - New item position to be set.
  644. //-----------------------------------------------------------------------
  645. void Move(int nIndex);
  646. //-------------------------------------------------------------------------
  647. // Summary:
  648. //     This method is called to determine if item can be closed
  649. // Returns:
  650. //     TRUE if item can be closed.
  651. //-------------------------------------------------------------------------
  652. BOOL IsClosable() const;
  653. //-----------------------------------------------------------------------
  654. // Summary:
  655. //     Call this member to forbid this tab to be closed
  656. // Parameters:
  657. //     bClosable - TRUE to allow user close this tab; FALSE to forbid
  658. //-----------------------------------------------------------------------
  659. void SetClosable(BOOL bClosable);
  660. CXTPMarkupUIElement* GetMarkupUIElement() const;
  661. public:
  662. //-------------------------------------------------------------------------
  663. // Summary:
  664. //     Call this member to get a pointer to the CXTPTabManager object.
  665. //     The CXTPTabManager object manages all CXTPTabManagerItem objects.
  666. // Returns:
  667. //     Pointer to parent CXTPTabManager.
  668. //-------------------------------------------------------------------------
  669. CXTPTabManager* GetTabManager() const;
  670. //-----------------------------------------------------------------------
  671. // Summary:
  672. //     Call this method to draw icon of single tab
  673. // Parameters:
  674. //     pDC - Pointer to device context to draw
  675. //     rcIcon - Bounding rectangle of icon
  676. //     pImage - Pointer to image associated with tab
  677. // See Also: CXTPImageManagerIcon
  678. //-----------------------------------------------------------------------
  679. void DrawImage(CDC* pDC, CRect rcIcon, CXTPImageManagerIcon* pImage);
  680. protected:
  681. //-----------------------------------------------------------------------
  682. // Summary:
  683. //     This method is called to update position of TabManager.
  684. //-----------------------------------------------------------------------
  685. void Reposition();
  686. //-----------------------------------------------------------------------
  687. // Summary:
  688. //     This method is called when item was removed from TabManager collection
  689. //-----------------------------------------------------------------------
  690. virtual void OnRemoved();
  691. private:
  692. BOOL DrawRotatedImage(CDC* pDC, CRect rcItem, CXTPImageManagerIcon* pImage);
  693. protected:
  694. int             m_nButtonLength;      // Width of the tab button.
  695. int             m_nContentLength;     // Width of the tab button.
  696. int             m_nImage;       // Image index, this is the index of an image within a CXTPImageManger or CImageList object.
  697. int             m_nIndex;       // Index of the tab within the collection of tabs.
  698. BOOL            m_bEnabled;     // TRUE if the tab is enabled.
  699. BOOL            m_bVisible;     // TRUE if the tab is visible.
  700. HWND            m_hWnd;         // A CWnd pointer to the window associated with a tab.
  701. HICON           m_hIcon;        // Icon associated with the tab.
  702. DWORD_PTR       m_dwData;       // Developer specific data
  703. CRect           m_rcItem;       // Rectangle of this tab.
  704. CString         m_strCaption;   // User specified label for the tab.
  705. CString         m_strToolTip;   // Tooltip text for the tab.
  706. COLORREF        m_clrItem;      // Color of tab button.
  707. CXTPTabManager* m_pTabManager;  // Parent item.
  708. int             m_nItemRow;     // Row of the item
  709. BOOL            m_bClosable;    // TRUE if item can be closed.
  710. CXTPTabManagerNavigateButtons m_arrNavigateButtons;         // Array of navigate buttons
  711. CXTPMarkupUIElement* m_pMarkupUIElement;
  712. private:
  713. BOOL            m_bFound;
  714. friend class CXTPTabManager;
  715. friend class CXTPTabPaintManager;
  716. friend class CXTPTabWorkspace;
  717. friend class CXTPTabClientWnd;
  718. friend class CXTPGroupClientWnd;
  719. };
  720. //===========================================================================
  721. // Summary:
  722. //     CXTPTabManagerAtom is a class that has only one purpose, which
  723. //     is to catch the event when a property of the PaintManager has changed.
  724. //     When a property of the PaintManager has changed, the OnPropertyChanged
  725. //     event if called. When the OnPropertyChanged is caught, Reposition
  726. //     is called to recalculate self layout.
  727. // Remarks:
  728. //     This is the base class for CXTPTabManager.  When a property of the
  729. //     CXTPTabPaintManager has changed, then OnPropertyChanged is called
  730. //     to recalculate the layout.  The paint manager can be accessed
  731. //     with the CXTPTabManager::GetPaintManager member.
  732. // See Also: CXTPTabManager::GetPaintManager
  733. //===========================================================================
  734. class CXTPTabManagerAtom
  735. {
  736. public:
  737. //-------------------------------------------------------------------------
  738. // Summary:
  739. //     This member is called when a property of the PaintManager has
  740. //     changed.
  741. // See Also: CXTPTabManager::GetPaintManager
  742. //-------------------------------------------------------------------------
  743. virtual void OnPropertyChanged()
  744. {
  745. Reposition();
  746. }
  747. //-------------------------------------------------------------------------
  748. // Summary:
  749. //     This member recalculates the layout of the tab manager and
  750. //     then repositions itself.  This member must be overridden in
  751. //     derived classes.
  752. //-------------------------------------------------------------------------
  753. virtual void Reposition() = 0;
  754. protected:
  755. //-------------------------------------------------------------------------
  756. // Summary:
  757. //     Destroys a CXTPTabManagerAtom object, handles cleanup and deallocation.
  758. //-------------------------------------------------------------------------
  759. virtual ~CXTPTabManagerAtom()
  760. {
  761. }
  762. };
  763. //===========================================================================
  764. // Summary:
  765. //     CXTPTabManager is a CXTPTabManagerAtom derived class.  This is the
  766. //     base class for docking pane tabs, tab control tabs, and
  767. //     MDI client tabs.
  768. // See Also: CXTPTabClientWnd, CXTPDockingPaneTabbedContainer, CXTPTabControl
  769. //===========================================================================
  770. class _XTP_EXT_CLASS CXTPTabManager : public CXTPTabManagerAtom
  771. {
  772. protected:
  773. class CNavigateButtonArrow;
  774. class CNavigateButtonArrowLeft;
  775. class CNavigateButtonArrowRight;
  776. class CNavigateButtonClose;
  777. class CNavigateButtonTabClose;
  778. public:
  779. //-------------------------------------------------------------------------
  780. // Summary:
  781. //     Helper structure contains first and last item index for row of tab manager
  782. //-------------------------------------------------------------------------
  783. struct ROW_ITEMS
  784. {
  785. int nFirstItem;     // First item index of row
  786. int nLastItem;      // Last item index of row
  787. };
  788. protected:
  789. //-------------------------------------------------------------------------
  790. // Summary:
  791. //     Helper class used to collect indexes of rows for multirow tab manager
  792. //-------------------------------------------------------------------------
  793. class CRowIndexer
  794. {
  795. public:
  796. //-------------------------------------------------------------------------
  797. // Summary:
  798. //     Constructs a CRowIndexer object.
  799. // Parameters:
  800. //     pManager - Owner tab manager
  801. //-------------------------------------------------------------------------
  802. CRowIndexer(CXTPTabManager* pManager);
  803. //-------------------------------------------------------------------------
  804. // Summary:
  805. //     Destroys a CRowIndexer object, handles cleanup and deallocation.
  806. //-------------------------------------------------------------------------
  807. ~CRowIndexer();
  808. public:
  809. //-------------------------------------------------------------------------
  810. // Summary:
  811. //     This method is called to create array of indexes for multirow tab manager
  812. // Parameters:
  813. //     nRowCount - total rows in TabManager.
  814. // Returns:
  815. //     Returns Items indexes for each row.
  816. //-------------------------------------------------------------------------
  817. ROW_ITEMS* CreateIndexer(int nRowCount);
  818. //-------------------------------------------------------------------------
  819. // Summary:
  820. //     Call this method to get indexes for multirow tab manager
  821. //-------------------------------------------------------------------------
  822. ROW_ITEMS* GetRowItems() const;
  823. private:
  824. ROW_ITEMS* m_pRowItems;
  825. int m_nRowCount;
  826. CXTPTabManager* m_pManager;
  827. friend class CXTPTabManager;
  828. };
  829. public:
  830. //-------------------------------------------------------------------------
  831. // Summary:
  832. //     Constructs a CXTPTabManager object.
  833. //-------------------------------------------------------------------------
  834. CXTPTabManager();
  835. //-------------------------------------------------------------------------
  836. // Summary:
  837. //     Destroys a CXTPTabManager object, handles cleanup and deallocation.
  838. //-------------------------------------------------------------------------
  839. virtual ~CXTPTabManager();
  840. public:
  841. //-----------------------------------------------------------------------
  842. // Summary:
  843. //     Retrieves information about a tab in a tab manager.
  844. // Parameters:
  845. //     nIndex - Zero-based index of the tab.
  846. // Returns:
  847. //     Pointer to CXTPTabManagerItem if successful; NULL otherwise.
  848. //-----------------------------------------------------------------------
  849. CXTPTabManagerItem* GetItem(int nIndex) const;
  850. //-----------------------------------------------------------------------
  851. // Summary:
  852. //     Removes the specified item from a tab manager.
  853. // Parameters:
  854. //     nItem - Zero-based value of the item to delete.
  855. // Returns:
  856. //     Nonzero if successful; otherwise 0.
  857. //-----------------------------------------------------------------------
  858. BOOL DeleteItem(int nItem);
  859. //-----------------------------------------------------------------------
  860. // Summary:
  861. //     Removes all items from a tab manager.
  862. //-----------------------------------------------------------------------
  863. void DeleteAllItems();
  864. //-----------------------------------------------------------------------
  865. // Summary:
  866. //     Retrieves the number of tabs in the tab manager.
  867. // Returns:
  868. //     Number of items in the tab manager.
  869. //-----------------------------------------------------------------------
  870. int GetItemCount() const;
  871. public:
  872. //-----------------------------------------------------------------------
  873. // Summary:
  874. //     Call this member to get the caption text of a tab.
  875. // Parameters:
  876. //     pItem - CXTPTabManagerItem tab item.
  877. // Returns:
  878. //     Caption text of the specified tab.
  879. //-----------------------------------------------------------------------
  880. virtual CString GetItemCaption(const CXTPTabManagerItem* pItem) const;
  881. //-----------------------------------------------------------------------
  882. // Summary:
  883. //     Call this member to get the HICON of a CXTPTabManagerItem.
  884. // Parameters:
  885. //     pItem - CXTPTabManagerItem to get HICON from.
  886. // Returns:
  887. //     HICON of specified CXTPTabManagerItem.
  888. //-----------------------------------------------------------------------
  889. virtual HICON GetItemIcon(const CXTPTabManagerItem* pItem) const;
  890. //-----------------------------------------------------------------------
  891. // Summary:
  892. //     Call this member to retrieve the color of a tab button.
  893. // Parameters:
  894. //     pItem - Tab to get color from.
  895. // Returns:
  896. //     The color of the tab button.
  897. // See Also: CXTPTabManagerItem::SetColor, CXTPTabManagerItem::GetColor
  898. //-----------------------------------------------------------------------
  899. virtual COLORREF GetItemColor(const CXTPTabManagerItem* pItem) const;
  900. //-----------------------------------------------------------------------
  901. // Summary:
  902. //     Call this member to get the tooltip that is displayed when
  903. //     the mouse pointer is positioned over the specified tab button.
  904. // Parameters:
  905. //     pItem - Get tooltip of this CXTPTabManagerItem tab.
  906. // Returns:
  907. //     The tooltip that is displayed when the mouse if over the
  908. //     specified tab button.
  909. // See Also: CXTPTabManagerItem::SetTooltip, CXTPTabManagerItem::GetTooltip
  910. //-----------------------------------------------------------------------
  911. virtual CString GetItemTooltip(const CXTPTabManagerItem* pItem) const;
  912. //-------------------------------------------------------------------------
  913. // Summary:
  914. //     This member is called when the tab items have changed.  Tab items will
  915. //     change after an item is added, deleted, or reordered.
  916. // Remarks:
  917. //     This member will recalculate the index for all items, then call
  918. //     Reposition.
  919. // See Also: CXTPTabManager::AddItem, CXTPTabManager::ReOrder, CXTPTabManager::DeleteItem,
  920. //           CXTPTabManager::DeleteAllItems
  921. //-------------------------------------------------------------------------
  922. virtual void OnItemsChanged();
  923. public:
  924. //-----------------------------------------------------------------------
  925. // Summary:
  926. //     Call this member to select a tab by its index.  A selected tab
  927. //     if the currently active tab.
  928. // Parameters:
  929. //     nIndex - Index of the tab to select.
  930. // Remarks:
  931. //     This member will set the current CXTPTabManagerItem by its index
  932. //     within the collection of items.
  933. //
  934. //           SetSelectedItem will select the specified CXTPTabManagerItem.
  935. //
  936. //           NOTE: SetCurSel will call SetSelectedItem after it gets a
  937. //                 pointer to the specified item.
  938. // See Also: CXTPTabManagerItem, GetCurSel, SetSelectedItem, GetSelectedItem
  939. //-----------------------------------------------------------------------
  940. void SetCurSel(int nIndex);
  941. //-----------------------------------------------------------------------
  942. // Summary:
  943. //     Call this member to get the index of the currently selected
  944. //     tab.
  945. // Remarks:
  946. //     Gets the index of m_pSelected, which is the currently selected
  947. //     tab.  The currently selected tab can be retrieved with the
  948. //     GetSelectedItem member.
  949. // Returns:
  950. //     Index of the currently selected tab.
  951. // See Also: CXTPTabManagerItem, SetSelectedItem, SetCurSel, GetSelectedItem
  952. //-----------------------------------------------------------------------
  953. int GetCurSel() const;
  954. //-----------------------------------------------------------------------
  955. // Summary:
  956. //     Call this member to select a CXTPTabManagerItem tab.  A selected tab
  957. //     if the currently active tab.
  958. // Parameters:
  959. //     pItem - CXTPTabManagerItem tab to select.
  960. // Remarks:
  961. //     This member will will select the specified CXTPTabManagerItem.
  962. //
  963. //           SetCurSel will set the current CXTPTabManagerItem by its index
  964. //           within the collection of items.
  965. //
  966. //           A tab is selected when it has focus or is clicked.
  967. // See Also: CXTPTabManagerItem, GetCurSel, SetCurSel, GetSelectedItem
  968. //-----------------------------------------------------------------------
  969. virtual void SetSelectedItem(CXTPTabManagerItem* pItem);
  970. //-----------------------------------------------------------------------
  971. // Summary:
  972. //     This method is called to set focused item.
  973. // Parameters:
  974. //     pItem - Item that become focused.
  975. // See Also:
  976. //     SetSelectedItem
  977. //-----------------------------------------------------------------------
  978. virtual void SetFocusedItem(CXTPTabManagerItem* pItem);
  979. //-----------------------------------------------------------------------
  980. // Summary:
  981. //     Call this member to get the currently selected tab.
  982. // Remarks:
  983. //     A tab is selected when it has focus or is clicked.
  984. // Returns:
  985. //     Pointer to the currently selected CXTPTabManagerItem tab.
  986. // See Also: CXTPTabManagerItem, SetSelectedItem, SetCurSel, GetCurSel
  987. //-----------------------------------------------------------------------
  988. CXTPTabManagerItem* GetSelectedItem() const;
  989. //-----------------------------------------------------------------------
  990. // Summary:
  991. //     This member is called to determine is a CXTPTabManagerItem tab
  992. //     is at a specific x and y coordinate.  This can be used to
  993. //     determine if the user clicked on a tab.
  994. // Parameters:
  995. //     point - CPoint to test.
  996. // Remarks:
  997. //     The tab must both be visible and enabled or NULL will be
  998. //     returned.
  999. // Returns:
  1000. //     If a CXTPTabManagerItem is at the specified point, then the
  1001. //     tab at the point is returned, otherwise NULL is returned.
  1002. // See Also: PerformClick, PerformMouseMove
  1003. //-----------------------------------------------------------------------
  1004. CXTPTabManagerItem* HitTest(CPoint point) const;
  1005. //-----------------------------------------------------------------------
  1006. // Summary:
  1007. //     This member is called to determine is a CXTPTabManagerNavigateButton
  1008. //     is at a specific x and y coordinate.
  1009. // Parameters:
  1010. //     point - CPoint to test.
  1011. //     pnIndex - Index of button to retrieve
  1012. //     bHeaderOnly - FALSE to not test buttons that located in items
  1013. // Returns:
  1014. //     If a CXTPTabManagerNavigateButton is at the specified point, then the
  1015. //     button at the point is returned, otherwise NULL is returned.
  1016. // See Also: HitTest
  1017. //-----------------------------------------------------------------------
  1018. CXTPTabManagerNavigateButton* HitTestNavigateButton(CPoint point, BOOL bHeaderOnly, int* pnIndex = NULL) const;
  1019. //-----------------------------------------------------------------------
  1020. // Summary:
  1021. //     Call this member to get the minimum, maximum, and normal lengths
  1022. //     of tab buttons.  These are the values used when calculating the lengths of
  1023. //     tabs for each XTPTabLayoutStyle.
  1024. // Parameters:
  1025. //     szNormal - Used only when XTPTabLayoutStyle = xtpTabLayoutFixed.
  1026. //                All tabs will have a length of szNormal with this layout.
  1027. //                For all other layouts, szMin and szMax are used as bounds
  1028. //                for the available length of a single tab.
  1029. //     szMin    - Minimum length of a single tab when layout is not
  1030. //                xtpTabLayoutFixed.
  1031. //     szMax    - Maximum length of a single tab when layout is not
  1032. //                xtpTabLayoutFixed.
  1033. // Remarks:
  1034. //     szNormal is only used to size tabs when the layout is
  1035. //     xtpTabLayoutFixed.
  1036. //     szMin and szMax are used to calculate the length of tabs for
  1037. //     all other layouts.  For example, SetItemMetrics might be called
  1038. //     to set the maximum available length for a tab when using the
  1039. //     xtpTabLayoutSizeToFit layout.
  1040. // See Also: XTPTabLayoutStyle, SetItemMetrics, SetLayoutStyle
  1041. //-----------------------------------------------------------------------
  1042. virtual void GetItemMetrics(CSize* szNormal, CSize* szMin = NULL, CSize* szMax = NULL) const;
  1043. //-----------------------------------------------------------------------
  1044. // Summary:
  1045. //     Call this member to set the minimum, maximum, and normal lengths
  1046. //     of tab buttons.  Each is used when calculating the lengths of
  1047. //     tabs for each XTPTabLayoutStyle.
  1048. // Parameters:
  1049. //     szNormal - Used only when XTPTabLayoutStyle = xtpTabLayoutFixed.
  1050. //                All tabs will have a length of szNormal with this layout.
  1051. //                For all other layouts, szMin and szMax are used as bounds
  1052. //                for the available length of a single tab.
  1053. //     szMin    - Minimum length of a single tab when layout is not
  1054. //                xtpTabLayoutFixed.
  1055. //     szMax    - Maximum length of a single tab when layout is not
  1056. //                xtpTabLayoutFixed.
  1057. // Remarks:
  1058. //     szNormal is only used to size tabs when the layout is
  1059. //     xtpTabLayoutFixed.
  1060. //     szMin and szMax are used to calculate the length of tabs for
  1061. //     all other layouts.  For example, SetItemMetrics might be called
  1062. //     to set the maximum available length for a tab when using the
  1063. //     xtpTabLayoutSizeToFit layout.
  1064. // See Also: XTPTabLayoutStyle, GetItemMetrics, SetLayoutStyle
  1065. //-----------------------------------------------------------------------
  1066. void SetItemMetrics(CSize szNormal, CSize szMin = CSize(0, 0), CSize szMax = CSize(0, 0));
  1067. //-----------------------------------------------------------------------
  1068. // Summary:
  1069. //     Call this member to reorder items.
  1070. // Parameters:
  1071. //     pItem  - Item you want to reorder.
  1072. //     nIndex - New item position to be set.
  1073. //-----------------------------------------------------------------------
  1074. void MoveItem(CXTPTabManagerItem* pItem, int nIndex);
  1075. //-----------------------------------------------------------------------
  1076. // Summary:
  1077. //     Call this member to show close button for each tab
  1078. // Parameters:
  1079. //     bCloseItemButton - XTPTabNavigateButtonFlags that specify if close button for each tab is visible
  1080. //-----------------------------------------------------------------------
  1081. void ShowCloseItemButton(XTPTabNavigateButtonFlags bCloseItemButton = xtpTabNavigateButtonAlways);
  1082. public:
  1083. //-----------------------------------------------------------------------
  1084. // Summary:
  1085. //     Call this member to get the total width of all the tab buttons.
  1086. // Returns:
  1087. //     Total width of all the tab buttons.
  1088. // Remarks:
  1089. //     The width might change depending on the tab layout and
  1090. //     position of the tabs.
  1091. // See Also: XTPTabLayoutStyle, XTPTabPosition
  1092. //-----------------------------------------------------------------------
  1093. int GetItemsLength() const;
  1094. //-----------------------------------------------------------------------
  1095. // Summary:
  1096. //     This member is called to get the length of the bounding
  1097. //     rectangle of the tab client header area.  This is the area that
  1098. //     has all of the tab buttons.
  1099. // Parameters:
  1100. //     rc - Bounding rectangle of tab client header area
  1101. // Returns:
  1102. //     If tabs are horizontal, then the width of the tab client header
  1103. //     area is returned.  If the tabs are vertical, then the height of
  1104. //     the tab client header area is returned.
  1105. // Remarks:
  1106. // See Also: GetAppearanceSet, CAppearanceSet::GetHeaderRect
  1107. //-----------------------------------------------------------------------
  1108. int GetRectLength(CRect rc) const;
  1109. //-----------------------------------------------------------------------
  1110. // Summary:
  1111. //     Call this member to get a pointer to one of the tab
  1112. //     navigation buttons.  Buttons include the left arrow, right
  1113. //     arrow, and close buttons in the tab header area.
  1114. // Parameters:
  1115. //     nID - Id of the button, can be one of the values listed in the
  1116. //           Remarks section.
  1117. // Remarks:
  1118. //     Standard ids of buttons are listed below:
  1119. //     * <b>xtpTabNavigateButtonLeft</b>  Left tab navigation button.
  1120. //     * <b>xtpTabNavigateButtonRight</b> Right tab navigation button.
  1121. //     * <b>xtpTabNavigateButtonClose</b> Close tab navigation button.
  1122. // Returns:
  1123. //     Pointer to the specified navigation button.
  1124. // See Also:
  1125. //     XTPTabNavigateButton
  1126. //-----------------------------------------------------------------------
  1127. CXTPTabManagerNavigateButton* FindNavigateButton(UINT nID) const;
  1128. //-----------------------------------------------------------------------
  1129. // Summary:
  1130. //     Call this member to determine if the tabs are positioned
  1131. //     horizontally.
  1132. // Returns:
  1133. //     TRUE if the tabs are located at the top or bottom, FALSE if
  1134. //     the tabs are on the left or right.
  1135. // See Also: GetPosition, XTPTabPosition
  1136. //-----------------------------------------------------------------------
  1137. BOOL IsHorizontalPosition() const;
  1138. //-----------------------------------------------------------------------
  1139. // Summary:
  1140. //     Call this member to get the scroll offset of the tab buttons in the
  1141. //     tab header.  This is how much the tabs have been scrolled by
  1142. //     pressing the left "<" and right ">" tab navigation buttons.
  1143. // Returns:
  1144. //     The scroll offset of the tab buttons in the tab header.
  1145. // Remarks:
  1146. //     The scroll offset starts at zero.  The offset will remain at
  1147. //     zero until there are enough tabs to scroll.  If the tabs are scrolled,
  1148. //     the offset will be a negative number indicating how much the tabs
  1149. //     have been scrolled to the right.
  1150. //
  1151. //          NOTE: GetHeaderOffset and SetHeaderOffset are used when the
  1152. //                left and right tab navigate buttons are pressed to scroll
  1153. //                the tabs by 20 pixels to the left or right.
  1154. //
  1155. //                EnsureVisible uses GetHeaderOffset and SetHeaderOffset to
  1156. //                ensure that a tab button is visible.
  1157. //
  1158. // Example:
  1159. //          This sample illustrate how to programmatically set the scroll offset
  1160. //          of the tabs in the tab header of the CXTPTabClientWnd.
  1161. // <code>
  1162. // //Scroll the tabs in the tab header to the right by 100 pixels.
  1163. // m_MTIClientWnd.GetWorkspace(0)->SetHeaderOffset((m_MTIClientWnd.GetWorkspace(0)->GetHeaderOffset()) - 100);
  1164. //
  1165. // //Scroll the tabs in the tab header to the left by 100 pixels.//
  1166. // m_MTIClientWnd.GetWorkspace(0)->SetHeaderOffset((m_MTIClientWnd.GetWorkspace(0)->GetHeaderOffset()) + 100);
  1167. // </code>
  1168. // See Also: SetHeaderOffset, CXTPTabManagerNavigateButton, EnsureVisible
  1169. //-----------------------------------------------------------------------
  1170. int GetHeaderOffset() const;
  1171. //-----------------------------------------------------------------------
  1172. // Summary:
  1173. //     Call this member to adjust the scroll offset of the tabs in the
  1174. //     tab header.
  1175. // Parameters:
  1176. //     nOffset - Scroll offset, number must be <= 0.  You should
  1177. //               use GetHeaderOffset to get the current offset and add
  1178. //               or subtract to move left and right.  If 0, then the
  1179. //               tabs will be reset to there starting position.
  1180. // Remarks:
  1181. //     The scroll offset starts at zero.  The offset will remain at
  1182. //     zero until there are enough tabs to scroll.  If the tabs are scrolled,
  1183. //     the offset will be a negative number indicating how much the tabs
  1184. //     have been scrolled to the right.
  1185. //
  1186. //          NOTE: GetHeaderOffset and SetHeaderOffset are used when the
  1187. //                left and right tab navigate buttons are pressed to scroll
  1188. //                the tabs by 20 pixels to the left or right.
  1189. //
  1190. //                EnsureVisible uses GetHeaderOffset and SetHeaderOffset to
  1191. //                ensure that a tab button is visible.
  1192. //
  1193. // Example:
  1194. //     This sample illustrate how to programmatically set the scroll offset
  1195. //     of the tabs in the tab header of the CXTPTabClientWnd.
  1196. // <code>
  1197. // //Scroll the tabs in the tab header to the right by 100 pixels.
  1198. // m_MTIClientWnd.GetWorkspace(0)->SetHeaderOffset((m_MTIClientWnd.GetWorkspace(0)->GetHeaderOffset()) - 100);
  1199. //
  1200. // //Scroll the tabs in the tab header to the left by 100 pixels.//
  1201. // m_MTIClientWnd.GetWorkspace(0)->SetHeaderOffset((m_MTIClientWnd.GetWorkspace(0)->GetHeaderOffset()) + 100);
  1202. // </code>
  1203. // See Also: GetHeaderOffset, CXTPTabManagerNavigateButton, EnsureVisible
  1204. //-----------------------------------------------------------------------
  1205. void SetHeaderOffset(int nOffset);
  1206. //-----------------------------------------------------------------------
  1207. // Summary:
  1208. //     Call this member to ensure that a tab is visible.
  1209. // Parameters:
  1210. //     pItem - CXTPTabManagerItem tab to make visible.
  1211. // See Also: SetHeaderOffset, GetHeaderOffset
  1212. //-----------------------------------------------------------------------
  1213. void EnsureVisible(CXTPTabManagerItem* pItem);
  1214. public:
  1215. //-----------------------------------------------------------------------
  1216. // Summary:
  1217. //     Call this member to get a pointer to the tab paint manager.
  1218. //     The tab paint manager is used to customize the appearance of
  1219. //     CXTPTabManagerItem objects and the tab manager.  I.e. Tab colors,
  1220. //     styles, etc...  This member must be overridden in
  1221. //     derived classes.
  1222. // Returns:
  1223. //     Pointer to CXTPTabPaintManager that contains the visual elements
  1224. //     of the tabs.
  1225. //-----------------------------------------------------------------------
  1226. virtual CXTPTabPaintManager* GetPaintManager() const = 0;
  1227. //-----------------------------------------------------------------------
  1228. // Summary:
  1229. //     Call this member to set a CXTPTabPaintManager object to the
  1230. //     tab manager.
  1231. // Parameters:
  1232. //     pPaintManager - Pointer to a CXTPTabPaintManager object.
  1233. // Remarks:
  1234. //     The tab paint manager is used to customize the appearance of
  1235. //     CXTPTabManagerItem objects and the tab manager.
  1236. //-----------------------------------------------------------------------
  1237. virtual void SetPaintManager(CXTPTabPaintManager* pPaintManager);
  1238. //-------------------------------------------------------------------------
  1239. // Summary:
  1240. //     This member is called when visual properties of the tabs are
  1241. //     changed.  For example, color, mouse-over, and on-click. This member
  1242. //     must be overridden in derived classes.
  1243. // Parameters:
  1244. //     lpRect - The rectangular area of the window that is invalid.
  1245. //     bAnimate - TRUE to animate changes in bounding rectangle.
  1246. //-------------------------------------------------------------------------
  1247. virtual void RedrawControl(LPCRECT lpRect, BOOL bAnimate) = 0;
  1248. //-----------------------------------------------------------------------
  1249. // Summary:
  1250. //     Call this member to determine if tab can be reordered.
  1251. // Returns:
  1252. //     TRUE id tabs can be reordered, FALSE if tabs cannot be reordered.
  1253. // See Also: SetAllowReorder
  1254. //-----------------------------------------------------------------------
  1255. virtual BOOL IsAllowReorder() const;
  1256. //-----------------------------------------------------------------------
  1257. // Summary:
  1258. //     Call this member to specify whether the user can reorder the
  1259. //     tabs.
  1260. // Parameters:
  1261. //     bAllowReorder - TRUE to allow tabs to be reordered, FALSE
  1262. //                     to disallow tab reordering.
  1263. // See Also: IsAllowReorder
  1264. //-----------------------------------------------------------------------
  1265. virtual void SetAllowReorder(BOOL bAllowReorder);
  1266. //-----------------------------------------------------------------------
  1267. // Summary:
  1268. //     Call this member to determine if a static frame is used.
  1269. // Returns:
  1270. //     TRUE if a static frame is used, FALSE otherwise.
  1271. // Remarks:
  1272. //     If TRUE, a static frame will be drawn around the entire tab
  1273. //     manager control.  The frame will be drawn around both the
  1274. //     tab header and tab client.
  1275. // See Also: CXTPTabPaintManager::m_bStaticFrame
  1276. //-----------------------------------------------------------------------
  1277. virtual BOOL IsDrawStaticFrame() const;
  1278. //-----------------------------------------------------------------------
  1279. // Summary:
  1280. //     This member is called when the icon of the tab needs to be
  1281. //     drawn.
  1282. // Parameters:
  1283. //     pDC    - Pointer to the destination device context.
  1284. //     pt     - Specifies the location of the image.
  1285. //     pItem  - CXTPTabManagerItem object to draw icon on.
  1286. //     bDraw  - TRUE if the icon needs to be drawn, I.e. the icon size
  1287. //              changed.  FALSE if the icon does not need to be
  1288. //              drawn or redrawn.
  1289. //     szIcon - Size of the tab icon.
  1290. // Remarks:
  1291. //     For example, on mouse-over.  This member is overridden by its
  1292. //     descendants.  This member must be overridden in
  1293. //     derived classes.
  1294. // Returns:
  1295. //     TRUE if the icon was successfully drawn, FALSE if the icon
  1296. //     was not drawn.
  1297. //-----------------------------------------------------------------------
  1298. virtual BOOL DrawIcon(CDC* pDC, CPoint pt, CXTPTabManagerItem* pItem, BOOL bDraw, CSize& szIcon) const = 0;
  1299. //-----------------------------------------------------------------------
  1300. // Summary:
  1301. //     Call this member function to enable Windows XP themed back color.
  1302. // Parameters:
  1303. //     hWnd    - The window handle of the target object or dialog.
  1304. //     bEnable - TRUE to enable Windows XP themed back color, FALSE to
  1305. //               disable Windows XP themed back color.
  1306. // Remarks:
  1307. //     This should only be used when the tab color is set to xtpTabColorWinXP.
  1308. // Example:
  1309. //     This sample code illustrates how to apply a Windows XP themed back color to a tab control.
  1310. // <code>
  1311. // m_wndTabControl.GetPaintManager()->SetColor(xtpTabColorWinXP);
  1312. // XTPTabColorStyle color = m_wndTabControl.GetPaintManager()->GetColor();
  1313. // m_wndTabControl.EnableTabThemeTexture(m_wndTabControl.GetSafeHwnd(), color == xtpTabColorWinXP ? TRUE : FALSE);
  1314. // RedrawWindow();
  1315. // </code>
  1316. // See Also: XTPTabColorStyle, GetColor, SetColor
  1317. //-----------------------------------------------------------------------
  1318. void EnableTabThemeTexture(HWND hWnd, BOOL bEnable = TRUE);
  1319. public:
  1320. //-----------------------------------------------------------------------
  1321. // Summary:
  1322. //     Call this member to apply one of the "built-in" color sets to
  1323. //     the tabs.
  1324. // Parameters:
  1325. //     tabColor - XTPTabColorStyle to apply to the tabs. Can be one of the
  1326. //                values listed in the remarks section.
  1327. // Remarks:
  1328. //     tabColor can be one of the following:
  1329. //         * <b>xtpTabColorDefault</b>      Tabs will use the default color for the currently set Appearance.
  1330. //         * <b>xtpTabColorVisualStudio</b> Tabs will use the Visual Studio color style for the currently set Appearance.
  1331. //         * <b>xtpTabColorOffice2003</b>   Tabs will use the Office 2003 color style for the currently set Appearance.
  1332. //         * <b>xtpTabColorWinXP</b>        Tabs will use the Windows XP color style for the currently set Appearance.
  1333. //         * <b>xtpTabColorWhidbey</b>      Tabs will use the Visual Studio 2005 "Whidbey" color style for the currently set Appearance.
  1334. // Returns:
  1335. //     Pointer to the CXTPTabPaintManager::CColorSet object applied.
  1336. // See Also:
  1337. //     XTPTabColorStyle, SetColorSet, GetColor, GetColorSet, XTPTabAppearanceStyle,
  1338. //     SetAppearanceSet, SetAppearance, GetAppearance, GetAppearanceSet
  1339. //-----------------------------------------------------------------------
  1340. CXTPTabPaintManager::CColorSet* SetColor(XTPTabColorStyle tabColor);
  1341. //-----------------------------------------------------------------------
  1342. // Summary:
  1343. //     Call this member to apply a custom color set to the tabs.
  1344. // Parameters:
  1345. //     pColorSet - Pointer to custom CXTPTabPaintManager::CColorSet
  1346. //                 appearance set.
  1347. // Returns:
  1348. //     Pointer to the newly set custom color set.
  1349. // See Also:
  1350. //     XTPTabColorStyle, SetColor, GetColor, GetColorSet, XTPTabAppearanceStyle,
  1351. //     SetAppearanceSet, SetAppearance, GetAppearance, GetAppearanceSet
  1352. //-----------------------------------------------------------------------
  1353. CXTPTabPaintManager::CColorSet* SetColorSet(CXTPTabPaintManager::CColorSet* pColorSet);
  1354. //-----------------------------------------------------------------------
  1355. // Summary:
  1356. //     Call this member to apply one of the "built-in" appearances to
  1357. //     the tabs.
  1358. // Parameters:
  1359. //     tabAppearance - XTPTabAppearanceStyle to apply to the tabs. Can be
  1360. //                     one of the values listed in the Remarks section.
  1361. // Returns:
  1362. //     Pointer to the CXTPTabPaintManager::CAppearanceSet object applied.
  1363. // Remarks:
  1364. //     Use SetAppearance to apply a "Built-In" theme such as
  1365. //     xtpTabAppearanceExcel.  To apply a custom them, use the
  1366. //     SetAppearanceSet member.
  1367. //
  1368. //     tabAppearance can be one of the following:
  1369. //         * <b>xtpTabAppearancePropertyPage</b>         Gives your tabs an Office 2000 appearance.
  1370. //         * <b>xtpTabAppearancePropertyPageSelected</b> Gives your tabs an Office 2000 selected appearance.
  1371. //         * <b>xtpTabAppearancePropertyPageFlat</b>     Gives your tabs an Office 2000 Flat appearance.
  1372. //         * <b>xtpTabAppearancePropertyPage2003</b>     Gives your tabs an Office 2003 appearance.
  1373. //         * <b>xtpTabAppearanceStateButtons</b>         Gives your tabs a State Button appearance.
  1374. //         * <b>xtpTabAppearanceVisualStudio</b>         Gives your tabs a Visual Studio appearance.
  1375. //         * <b>xtpTabAppearanceFlat</b>                 Gives your tabs Flat appearance.
  1376. //         * <b>xtpTabAppearanceExcel</b>                Gives your tabs an Excel appearance.
  1377. //         * <b>xtpTabAppearanceVisio</b>                Gives your tabs a Visio appearance.   // See Also:
  1378. //     XTPTabAppearanceStyle, SetAppearanceSet, GetAppearance, GetAppearanceSet,
  1379. //     SetColor, GetColor, GetColorSet, SetColorSet
  1380. //-----------------------------------------------------------------------
  1381. CXTPTabPaintManager::CAppearanceSet* SetAppearance(XTPTabAppearanceStyle tabAppearance);
  1382. //-----------------------------------------------------------------------
  1383. // Summary:
  1384. //     Call this member to apply a custom appearance set.
  1385. // Parameters:
  1386. //     pAppearanceSet - Pointer to custom CXTPTabPaintManager::CAppearanceSet
  1387. //                      appearance set.
  1388. // Remarks:
  1389. //     An appearance set specifies how the tabs will look.  This
  1390. //     is the actual physical structure of the tab buttons.  For example,
  1391. //     tab buttons with an Excel appearance style will have a
  1392. //     half hexagon shape.  SetColorSet is used to set custom
  1393. //     colors.
  1394. //
  1395. //          See the GUI_Eclipse sample for an example of how to create
  1396. //          a custom appearance set and apply it to the tabs.
  1397. // Returns:
  1398. //     Pointer to newly set custom appearance set.
  1399. // See Also:
  1400. //     XTPTabAppearanceStyle, SetAppearance, GetAppearance, GetAppearanceSet,
  1401. //     SetColor, GetColor, GetColorSet, SetColorSet
  1402. //-----------------------------------------------------------------------
  1403. CXTPTabPaintManager::CAppearanceSet* SetAppearanceSet(CXTPTabPaintManager::CAppearanceSet* pAppearanceSet);
  1404. //-----------------------------------------------------------------------
  1405. // Summary:
  1406. //     Call this member to get the currently set custom appearance set.
  1407. // Returns:
  1408. //     Pointer to the currently used custom appearance set.
  1409. // Remarks:
  1410. //     An appearance set specifies how the tabs will look.  This
  1411. //     is the actual physical structure of the tab buttons.  For example,
  1412. //     tab buttons with an Excel appearance style will have a
  1413. //     half hexagon shape.  SetColorSet is used to set
  1414. //     custom colors.
  1415. //
  1416. //          See the GUI_Eclipse sample for an example of how to create
  1417. //          a custom appearance set and apply it to the tabs.
  1418. // See Also: GetAppearanceSet, SetAppearanceSet, SetAppearance
  1419. //-----------------------------------------------------------------------
  1420. CXTPTabPaintManager::CAppearanceSet* GetAppearanceSet() const;
  1421. //-----------------------------------------------------------------------
  1422. // Summary:
  1423. //     Call this member to get the currently used custom color set.
  1424. // Returns:
  1425. //     Currently used custom color set.
  1426. // See Also: XTPTabColorStyle, GetColor, SetColorSet, SetColor
  1427. //-----------------------------------------------------------------------
  1428. CXTPTabPaintManager::CColorSet* GetColorSet() const;
  1429. //-----------------------------------------------------------------------
  1430. // Summary:
  1431. //     Call this member to determine the currently set appearance style.
  1432. // Returns:
  1433. //     The currently set XTPTabAppearanceStyle.
  1434. // Remarks:
  1435. //     The appearance is the physical structure of the tab buttons.
  1436. // See Also: XTPTabAppearanceStyle, GetAppearanceSet, SetAppearanceSet, SetAppearance
  1437. //-----------------------------------------------------------------------
  1438. XTPTabAppearanceStyle GetAppearance() const;
  1439. //-----------------------------------------------------------------------
  1440. // Summary:
  1441. //     Call this member to get the currently used tab color style.
  1442. // Returns:
  1443. //     Currently used color style.
  1444. // Remarks:
  1445. //     Color styles are used to colorize the tabs.  For example,
  1446. //     applying the xtpTabColorWinXP color style will give the
  1447. //     tabs Windows XP colorization.
  1448. // See Also: XTPTabColorStyle, SetColor, GetColorSet, SetColorSet
  1449. //-----------------------------------------------------------------------
  1450. XTPTabColorStyle GetColor() const;
  1451. //-----------------------------------------------------------------------
  1452. // Summary:
  1453. //     Call this member to set the position of the tabs.
  1454. // Parameters:
  1455. //     tabPosition - New XTPTabPosition to apply to tab manager. Can be one
  1456. //                   of the values listed in the remarks section.
  1457. // Remarks:
  1458. //     The position refers to where the tabs are located in relation
  1459. //     to the TabClient.  The tabs can be positioned on the
  1460. //     top, bottom, left, or right side of the TabClient.
  1461. //
  1462. //     tabPosition can be one of the following:
  1463. //         * <b>xtpTabPositionTop</b>    Tabs will be drawn on the Top.
  1464. //         * <b>xtpTabPositionLeft</b>   Tabs will be drawn on the Left.
  1465. //         * <b>xtpTabPositionBottom</b> Tabs will be drawn on the Bottom.
  1466. //         * <b>xtpTabPositionRight</b>  Tabs will be drawn on the Right.
  1467. // See Also: XTPTabPosition, GetPosition
  1468. //-----------------------------------------------------------------------
  1469. void SetPosition(XTPTabPosition tabPosition);
  1470. //-----------------------------------------------------------------------
  1471. // Summary:
  1472. //     Call this member to set the tab layout style.
  1473. // Parameters:
  1474. //     tabLayout - New XTPTabLayoutStyle to apply to the tabs. Can be one
  1475. //                 of the values listed in the Remarks section.
  1476. // Remarks:
  1477. //     The layout refers to how the tabs are sized within the tab
  1478. //     header.  Tabs can be in a compressed, fixed, auto size, or
  1479. //     sized-to-fit layout.
  1480. //
  1481. //     tabLayout can be one of the following:
  1482. //         * <b>xtpTabLayoutAutoSize</b>   Tabs will be automatically sized based on the caption and image size.  With this flag set, tabs will appear in their normal size.
  1483. //         * <b>xtpTabLayoutSizeToFit</b>  Tabs are sized to fit within the tab panel.  All tabs will be compressed and forced to fit into the tab panel.
  1484. //         * <b>xtpTabLayoutFixed</b>      All tabs will be set to a fixed size within the tab panel.
  1485. //         * <b>xtpTabLayoutCompressed</b> Tabs will be compressed within the tab panel.  This will compress the size of the tabs, but all tabs will not be forced into the tab panel.
  1486. //         * <b>xtpTabLayoutMultiRow</b>   Causes a tab control to display multiple rows of tabs
  1487. // See Also: XTPTabLayoutStyle, GetLayout
  1488. //-----------------------------------------------------------------------
  1489. void SetLayoutStyle(XTPTabLayoutStyle tabLayout);
  1490. //-----------------------------------------------------------------------
  1491. // Summary:
  1492. //     Call this member to get the current position of the tabs.
  1493. // Returns:
  1494. //     Current XTPTabPosition of the tabs.
  1495. // Remarks:
  1496. //     The position refers to where the tabs are located in relation
  1497. //     to the TabClient.  The tabs can be positioned on the
  1498. //     top, bottom, left, or right side of the TabClient.
  1499. // See Also: XTPTabPosition, SetPosition
  1500. //-----------------------------------------------------------------------
  1501. virtual XTPTabPosition GetPosition() const;
  1502. //-----------------------------------------------------------------------
  1503. // Summary:
  1504. //     Call this member to get the currently used tab layout style.
  1505. // Returns:
  1506. //     Currently set tab layout style.
  1507. // Remarks:
  1508. //     The layout refers to how the tabs are sized within the tab
  1509. //     header.  Tabs can be in a compressed, fixed, auto size, or
  1510. //     sized-to-fit layout.
  1511. // See Also: XTPTabLayoutStyle, SetLayoutStyle
  1512. //-----------------------------------------------------------------------
  1513. XTPTabLayoutStyle GetLayout() const;
  1514. //-----------------------------------------------------------------------
  1515. // Summary:
  1516. //     Call this member to hide or show tab icons.
  1517. // Parameters:
  1518. //     bShowIcons - TRUE to show icons in the tabs, FALSE to hide
  1519. //                  tab icons.
  1520. //-----------------------------------------------------------------------
  1521. void ShowIcons(BOOL bShowIcons);
  1522. //-----------------------------------------------------------------------
  1523. // Summary:
  1524. //     Call this member to make a MDITabClient tab group active.
  1525. //     SetActive works only for tab groups in the MDITabClient when group
  1526. //     is enabled. Only one group can  be active.
  1527. // Parameters:
  1528. //     bActive - TRUE to make this tab group active, FALSE to make
  1529. //               this tab group inactive.
  1530. // Remarks:
  1531. //     When grouping is enabled, each tab group has its own CXTPTabManager.
  1532. //     SetActive is used to activateset focus to the tab group.
  1533. //
  1534. //          NOTE: This only applies to tab groups in the MDITabClient, this
  1535. //          is the tabs that appear in the CommandBars TabWorkspace.
  1536. // See Also: IsActive, CXTPTabClientWnd::Attach
  1537. //-----------------------------------------------------------------------
  1538. void SetActive(BOOL bActive);
  1539. //-----------------------------------------------------------------------
  1540. // Summary:
  1541. //     Call this member to determine if a group of tabs in the
  1542. //     MDITabClient is active.  This only applies to groups of tabs
  1543. //     in the TabWorkspace with grouping enabled.
  1544. //     enabled
  1545. // Returns:
  1546. //     TRUE if this group of tabs is active, FALSE otherwise.
  1547. // Remarks:
  1548. //     When grouping is enabled, each tab group has its own CXTPTabManager.
  1549. //     SetActive is used to activateset focus to the tab group.
  1550. //
  1551. //          NOTE: This only applies to tab groups in the MDITabClient, this
  1552. //          is the tabs that appear in the CommandBars TabWorkspace.
  1553. // See Also: SetActive, CXTPTabClientWnd::Attach
  1554. //-----------------------------------------------------------------------
  1555. BOOL IsActive() const;
  1556. //-----------------------------------------------------------------------
  1557. // Summary:
  1558. //     Call this member to get the bounding rectangle to the tab
  1559. //     manager control area.
  1560. // Returns:
  1561. //     Bounding rectangle of tab manager control area.
  1562. // See Also: GetHeaderRect, GetClientRect
  1563. //-----------------------------------------------------------------------
  1564. CRect GetControlRect() const;
  1565. //-----------------------------------------------------------------------
  1566. // Summary:
  1567. //     Call this member to get the bounding rectangle to the tab
  1568. //     client area.
  1569. // Returns:
  1570. //     Bounding rectangle of tab client area.
  1571. // See Also: GetHeaderRect, GetControlRect
  1572. //-----------------------------------------------------------------------
  1573. CRect GetClientRect() const;
  1574. //-----------------------------------------------------------------------
  1575. // Summary:
  1576. //     Call this member to get the bounding rectangle to the tab
  1577. //     client header area.
  1578. // Returns:
  1579. //     Bounding rectangle of tab header area.
  1580. // See Also: GetClientRect, GetControlRect
  1581. //-----------------------------------------------------------------------
  1582. CRect GetHeaderRect() const;
  1583. //-----------------------------------------------------------------------
  1584. // Summary:
  1585. //     Retrieves the current number of rows in a tab control.
  1586. //     Only tab controls that have the xtpTabLayoutMultiRow layout can have multiple rows of tabs.
  1587. // Returns:
  1588. //     The number of rows of tabs in the tab control.
  1589. // See Also: SetLayoutStyle, CXTPTabManagerItem::GetItemRow
  1590. //-----------------------------------------------------------------------
  1591. int GetRowCount() const;
  1592. //-----------------------------------------------------------------------
  1593. // Summary:
  1594. //     This member is called then user press left or right navigate button
  1595. // Parameters:
  1596. //     bRight - TRUE to scroll to right; FALSE to left.
  1597. //-----------------------------------------------------------------------
  1598. virtual void OnScrollHeader(BOOL bRight);
  1599. //-----------------------------------------------------------------------
  1600. // Summary:
  1601. //     Call this method to get collection of navigate buttons.
  1602. // Returns:
  1603. //     Array of CXTPTabManagerNavigateButton classes.
  1604. // See Also:
  1605. //     CXTPTabManagerNavigateButtons, CXTPTabManagerNavigateButton
  1606. //-----------------------------------------------------------------------
  1607. CXTPTabManagerNavigateButtons* GetNavigateButtons();
  1608. //-----------------------------------------------------------------------
  1609. // Summary:
  1610. //     Call this method to get next of previous focusable tab item
  1611. // Parameters:
  1612. //     nIndex - Index to start find
  1613. //     nDirection - Direction to find (+1 or -1)
  1614. // Returns:
  1615. //     Pointer to next focusable item
  1616. // Remarks:
  1617. //     Tab is focusable if visible and enabled
  1618. // See Also: CXTPTabManagerItem
  1619. //-----------------------------------------------------------------------
  1620. CXTPTabManagerItem* FindNextFocusable(int nIndex, int nDirection) const;
  1621. public:
  1622. //-----------------------------------------------------------------------
  1623. // Summary:
  1624. //     This member is called when the mouse cursor moves.
  1625. // Parameters:
  1626. //     hWnd - Handle to the CWnd object beneath the mouse cursor.
  1627. //     pt   - Specifies the x- and y-coordinate of the cursor. These
  1628. //            coordinates are always relative to the upper-left
  1629. //            corner of the window.
  1630. // Remarks:
  1631. //     When the mouse cursor is moved across a tab and hot tracking
  1632. //     is enabled, PerformMouseMove will highlight and un-highlight
  1633. //     the tabs.  It will then call CXTPTabManagerNavigateButton::PerformMouseMove
  1634. //     for each tab navigation button.
  1635. //
  1636. //          When the mouse cursor is moved across a tab navigation button,
  1637. //          CXTPTabManagerNavigateButton::PerformMouseMove is called to
  1638. //          perform actions related to mouse movement over the navigation
  1639. //          buttons.  This will highlight and un-highlight the tab
  1640. //          navigation buttons.
  1641. // See Also: CXTPTabManagerNavigateButton::PerformMouseMove
  1642. //-----------------------------------------------------------------------
  1643. void PerformMouseMove(HWND hWnd, CPoint pt);
  1644. //-----------------------------------------------------------------------
  1645. // Summary:
  1646. //     This member is called when the user presses the left mouse button.
  1647. // Parameters:
  1648. //     hWnd - Handle to the CWnd object beneath the mouse cursor.
  1649. //     pt   - Specifies the x- and y-coordinate of the cursor. These
  1650. //            coordinates are always relative to the upper-left
  1651. //            corner of the window.
  1652. //     bNoItemClick - TRUE to only perform a click on tab navigation
  1653. //                    buttons.  If TRUE, only the tab navigation
  1654. //                    buttons will be tested to see if they were clicked,
  1655. //                    the tabs will not receive the click.
  1656. //
  1657. //                    FALSE to test both the tab navigation buttons and
  1658. //                    the tabs to see if they were clicked.
  1659. //
  1660. // Remarks:
  1661. //     When the user clicks on a tab navigation button, this member
  1662. //     will call the CXTPTabManagerNavigateButton::PerformClick
  1663. //     member of the navigation button that was clicked.
  1664. //
  1665. //          If a tab was clicked, then the OnItemClick member is called,
  1666. //          which will select the tab.
  1667. //
  1668. //          If IsAllowReorder is TRUE, then ReOrder is called before
  1669. //          OnItemClick.  ReOrder will check to see if the tab is being
  1670. //          moved, if it is, then the tab remains selected so OnItemClick
  1671. //          is not called.  If the tab was not being moved, then
  1672. //          OnItemClick is called.
  1673. //
  1674. // Returns:
  1675. //     TRUE if a tab navigation button or tab was clicked, FALSE
  1676. //     not items were clicked or if bNoItemClick is TRUE and a tab
  1677. //     was clicked.
  1678. // See Also: OnItemClick, ReOrder, CXTPTabManager::OnNavigateButtonClick
  1679. //-----------------------------------------------------------------------
  1680. BOOL PerformClick(HWND hWnd, CPoint pt, BOOL bNoItemClick = FALSE);
  1681. //-----------------------------------------------------------------------
  1682. // Summary:
  1683. //     This member is called to retrieve tooltip information about a
  1684. //     tab and stores the information in a TOOLINFO object.
  1685. // Parameters:
  1686. //     hWnd  - Handle to the window that contains the tab.
  1687. //     point - Specifies the x- and y-coordinate of the cursor.
  1688. //     pTI   - The TOOLINFO structure to copy information about a
  1689. //             CXTPTabManagerItem.
  1690. // Returns: -1 if a tooltip was not found for the CXTPTabManagerItem, If a
  1691. //          tooltip was found, then the Id of the CXTPTabManagerItem is returned.
  1692. // Remarks:
  1693. //     This member is called in the CXTPTabControl::OnToolHitTest,
  1694. //     CXTPDockingPaneTabbedContainer::OnToolHitTest, and
  1695. //     CXTPTabClientWnd::OnToolHitTest members.
  1696. //-----------------------------------------------------------------------
  1697. virtual INT_PTR PerformToolHitTest(HWND hWnd, CPoint point, TOOLINFO* pTI) const;
  1698. //-----------------------------------------------------------------------
  1699. // Summary:
  1700. //     This method is called to process WM_KEYDOWN event of TabManager
  1701. // Parameters:
  1702. //     hWnd - Handle to the window that contains the tab.
  1703. //     nChar - Specifies the virtual-key code of the given key.
  1704. // Returns:
  1705. //     TRUE if key was processes; FALSE otherwise
  1706. //-----------------------------------------------------------------------
  1707. virtual BOOL PerformKeyDown(HWND hWnd, UINT nChar);
  1708. //-----------------------------------------------------------------------
  1709. // Summary:
  1710. //     This method is called to draw parent background under tab control
  1711. // Parameters:
  1712. //     pDC - Pointer to valid device context
  1713. //     rc  - Bounding rectangle
  1714. // Returns: TRUE if rectangle was filled.
  1715. //-----------------------------------------------------------------------
  1716. virtual BOOL DrawParentBackground(CDC* pDC, CRect rc);
  1717. public:
  1718. //-----------------------------------------------------------------------
  1719. // Summary:
  1720. //     This member is called to get the total number of tab
  1721. //     navigation buttons added to the tab header.
  1722. // Returns:
  1723. //     Total number of tab navigation buttons added to this
  1724. //     tab manager.
  1725. // See Also: GetNavigateButton, CXTPTabManagerNavigateButton, OnNavigateButtonClick
  1726. //-----------------------------------------------------------------------
  1727. int GetNavigateButtonCount() const;
  1728. //-----------------------------------------------------------------------
  1729. // Summary:
  1730. //     This member will retrieve a tab navigation button by its index.
  1731. // Parameters:
  1732. //     nIndex - Zero based index into the array of tab navigation buttons.
  1733. // Remarks:
  1734. //     Call this member function to retrieve a tab navigation button by
  1735. //     its index in button array <i>m_arrNavigateButtons</i>.
  1736. // Returns:
  1737. //     A CXTPTabManagerNavigateButton object that represents the tab
  1738. //     navigation button at the specified index.
  1739. // See Also:
  1740. //     GetNavigateButtonCount, CXTPTabManagerNavigateButton, OnNavigateButtonClick
  1741. //-----------------------------------------------------------------------
  1742. CXTPTabManagerNavigateButton* GetNavigateButton(int nIndex) const;
  1743. public:
  1744. //-------------------------------------------------------------------------
  1745. // Summary:
  1746. //     Call this method to enable markup for tab captions
  1747. // Parameters:
  1748. //     bEnable - TRUE to enable markup
  1749. //-------------------------------------------------------------------------
  1750. void EnableMarkup(BOOL bEnable = TRUE);
  1751. //-------------------------------------------------------------------------
  1752. // Summary:
  1753. //     Returns markup context
  1754. //-------------------------------------------------------------------------
  1755. CXTPMarkupContext* GetMarkupContext() const;
  1756. protected:
  1757. //-----------------------------------------------------------------------
  1758. // Summary:
  1759. //     Determines if navigate button with xtpTabNavigateButtonAutomatic style is visible.
  1760. // Parameters:
  1761. //     pButton - Button to check
  1762. //-----------------------------------------------------------------------
  1763. virtual BOOL IsNavigateButtonAutomaticVisible(CXTPTabManagerNavigateButton* pButton);
  1764. //-----------------------------------------------------------------------
  1765. // Summary:
  1766. //     This member is called when a tab button is clicked.  This
  1767. //     will select the tab that was clicked.
  1768. // Parameters:
  1769. //     pItem - Pointer to the CXTPTabManagerItem tab that was clicked.
  1770. // See Also: PerformClick
  1771. //-----------------------------------------------------------------------
  1772. virtual void OnItemClick(CXTPTabManagerItem* pItem);
  1773. //-----------------------------------------------------------------------
  1774. // Summary:
  1775. //     This method is called before item click
  1776. // Parameters:
  1777. //     pItem - Pointer to item is about to be clicked
  1778. // Returns:
  1779. //     TRUE if cancel process
  1780. //-----------------------------------------------------------------------
  1781. virtual BOOL OnBeforeItemClick(CXTPTabManagerItem* pItem);
  1782. //-----------------------------------------------------------------------
  1783. // Summary:
  1784. //     This member is called when a CXTPTabManagerItem is clicked
  1785. //     and dragged within the tab header.  This will reorder the
  1786. //     selected tab to the location it is dragged to.
  1787. // Parameters:
  1788. //     hWnd  - Handle to the CWnd object beneath the mouse cursor.
  1789. //     pt   - Specifies the x- and y-coordinate of the cursor. These
  1790. //            coordinates are always relative to the upper-left
  1791. //            corner of the window.
  1792. //     pItem - Pointer to the CXTPTabManagerItem tab that is being
  1793. //             clicked and dragged.
  1794. // See Also: PerformClick
  1795. //-----------------------------------------------------------------------
  1796. virtual void ReOrder(HWND hWnd, CPoint pt, CXTPTabManagerItem* pItem);
  1797. //-----------------------------------------------------------------------
  1798. // Summary:
  1799. //     This member is called when a tab navigation button is clicked.
  1800. // Parameters:
  1801. //     pButton - Button that was clicked
  1802. //     nID     - Button identifier. It can be one of the values listed in the
  1803. //               Remarks section.
  1804. // Remarks:
  1805. //     Standard ids of buttons are listed below:
  1806. //     * <b>xtpTabNavigateButtonLeft</b>  Left tab navigation button.
  1807. //     * <b>xtpTabNavigateButtonRight</b> Right tab navigation button.
  1808. //     * <b>xtpTabNavigateButtonClose</b> Close tab navigation button.
  1809. //
  1810. //     This method is overridden in CXTPTabClientWnd::CWorkspace and
  1811. //     CXTPTabControl to capture when the tab navigation close "x"
  1812. //     button was pressed and deletes the tab.
  1813. //
  1814. //     This member is called after CXTPTabManagerNavigateButton::PerformClick.
  1815. // See Also:
  1816. //     CXTPTabManagerNavigateButton::PerformClick, XTPTabNavigateButton
  1817. //-----------------------------------------------------------------------
  1818. virtual void OnNavigateButtonClick(CXTPTabManagerNavigateButton* pButton);
  1819. virtual void OnNavigateButtonClick(UINT nID); // <COMBINE CXTPTabManager::OnNavigateButtonClick@CXTPTabManagerNavigateButton*>
  1820. //-----------------------------------------------------------------------
  1821. // Summary:
  1822. //     This member is called to determine if the MouseMove event
  1823. //     have been disabled.  This member is overridden in
  1824. //     CXTPTabClientWnd::CWorkspace.
  1825. // Returns:
  1826. //     Always returns FALSE in the base class.
  1827. // Remarks:
  1828. //     The MouseMove event is disabled when a command bar popup
  1829. //     becomes active (visible).
  1830. // See Also: CXTPTabClientWnd::CWorkspace::IsMouseLocked
  1831. //-----------------------------------------------------------------------
  1832. virtual BOOL IsMouseLocked() const;
  1833. //-----------------------------------------------------------------------
  1834. // Summary:
  1835. //     This member is called to add a new or existing CXTPTabManagerItem
  1836. //     to the collection of tabs for this tab manager.
  1837. // Parameters:
  1838. //     nItem - Position in the collection of CXTPTabManagerItem tabs
  1839. //             to add or insert the CXTPTabManagerItem.  If the
  1840. //             position specified is less than 0 or greater than
  1841. //             the amount of tabs in the collection, then it will
  1842. //             be added to the end of the collection.
  1843. //     pItem - CXTPTabManagerItem to insert into the collection of
  1844. //             tabs.  If NULL, then a new CXTPTabManagerItem will
  1845. //             be created and inserted at the specified position.
  1846. // Returns:
  1847. //     Pointer to the newly added CXTPTabManagerItem.
  1848. // Remarks:
  1849. //     This member is overridden in its derives classes to provide
  1850. //     additional functionality, then this base class member is called.
  1851. //-----------------------------------------------------------------------
  1852. CXTPTabManagerItem* AddItem(int nItem, CXTPTabManagerItem* pItem = NULL);
  1853. //-------------------------------------------------------------------------
  1854. // Summary:
  1855. //     This virtual member is called to determine if control has focus and need
  1856. //     to draw focused rectangle around focused item
  1857. // Returns:
  1858. //     TRUE if header has has focus
  1859. //-------------------------------------------------------------------------
  1860. virtual BOOL HeaderHasFocus() const;
  1861. protected:
  1862. //-----------------------------------------------------------------------
  1863. // Summary:
  1864. //     This method is called to activate tab item on mouse click
  1865. // Parameters:
  1866. //     hWnd -  Handle to the CWnd object beneath the mouse cursor.
  1867. //     pt   - Specifies the x- and y-coordinate of the cursor. These
  1868. //            coordinates are always relative to the upper-left
  1869. //            corner of the window.
  1870. //     pItem - Tab item to track
  1871. //-----------------------------------------------------------------------
  1872. void TrackClick(HWND hWnd, CPoint pt, CXTPTabManagerItem* pItem);
  1873. //-----------------------------------------------------------------------
  1874. // Summary:
  1875. //     This method is called when handle of item was changed
  1876. // Parameters:
  1877. //     pItem - Item which handle was changed
  1878. //     hwndOld - Previous handle of item
  1879. //     hwndNew - New handle of item
  1880. //-----------------------------------------------------------------------
  1881. virtual void OnItemHandleChanged(CXTPTabManagerItem* pItem, HWND hwndOld, HWND hwndNew);
  1882. protected:
  1883. CXTPTabManagerItem* m_pSelected;    // Tab currently selected.  I.e. When the tab is clicked.
  1884. CXTPTabManagerItem* m_pHighlighted; // Tab currently highlighted.  I.e. When the mouse cursor is over the tab button.
  1885. CXTPTabManagerItem* m_pPressed;     // Tab currently pressed.
  1886. CXTPTabManagerNavigateButton* m_pHighlightedNavigateButton;         // Pointer to highlighted navigate button
  1887. int m_nHeaderOffset;                // Scroll offset, this is how much the tabs in the tab header have been scrolled
  1888.                                     // using the left and right tab navigation buttons.  See: GetHeaderOffset, SetHeaderOffset
  1889. BOOL m_bAllowReorder;               // TRUE to allow tabs to be reordered.
  1890. BOOL m_bActive;                     // TRUE if the MDITabClient tab group is active.  This only applies to
  1891.                                     // a TabWorkspace when grouping is enabled.
  1892. XTPTabNavigateButtonFlags m_bCloseItemButton;           // TRUE to show close button for tabs.
  1893. CRect m_rcHeaderRect;               // Bounding rectangle of the tab header area.
  1894. CRect m_rcControl;                  // Bounding rectangle of the tab manager control.  This is the bounding
  1895.                                     // rectangle for both the tab header and tab client.
  1896. CRect m_rcClient;                   // Bounding rectangle of the tab client area.
  1897. CArray<CXTPTabManagerItem*, CXTPTabManagerItem*> m_arrItems;                                // Collection of tabs of this tab manager.
  1898. CXTPTabManagerNavigateButtons m_arrNavigateButtons;  // Collection of tab navigation buttons for this tab manager
  1899. CXTPWinThemeWrapper m_themeTabControl;  // Internal helper for drawing XP interface parts.
  1900. CRowIndexer* m_pRowIndexer;         // Row indexer;
  1901. int  m_nScrollDelta;                // Scroll header delta
  1902. CXTPMarkupContext* m_pMarkupContext;
  1903. private:
  1904. friend class CXTPTabManagerItem;
  1905. friend class CXTPTabPaintManager;
  1906. friend class CXTPTabManagerNavigateButton;
  1907. friend class CXTPTabClientWnd;
  1908. };
  1909. //////////////////////////////////////////////////////////////////////////
  1910. // CXTPTabManagerItem
  1911. AFX_INLINE CXTPTabManager* CXTPTabManagerItem::GetTabManager() const{
  1912. return m_pTabManager;
  1913. }
  1914. AFX_INLINE BOOL CXTPTabManagerItem::IsSelected() const {
  1915. return m_pTabManager->m_pSelected == this;
  1916. }
  1917. AFX_INLINE BOOL CXTPTabManagerItem::IsHighlighted() const {
  1918. return m_pTabManager->m_pHighlighted == this;
  1919. }
  1920. AFX_INLINE BOOL CXTPTabManagerItem::IsPressed() const {
  1921. return m_pTabManager->m_pPressed == this;
  1922. }
  1923. AFX_INLINE CRect CXTPTabManagerItem::GetRect() const{
  1924. return m_rcItem;
  1925. }
  1926. AFX_INLINE int CXTPTabManagerItem::GetIndex() const {
  1927. return m_nIndex;
  1928. }
  1929. AFX_INLINE DWORD_PTR CXTPTabManagerItem::GetData() const {
  1930. return m_dwData;
  1931. }
  1932. AFX_INLINE void CXTPTabManagerItem::SetData(DWORD_PTR dwData) {
  1933. m_dwData = dwData;
  1934. }
  1935. AFX_INLINE int CXTPTabManagerItem::GetImageIndex() const {
  1936. return m_nImage;
  1937. }
  1938. AFX_INLINE BOOL CXTPTabManagerItem::IsClosable() const {
  1939. return m_bClosable;
  1940. }
  1941. AFX_INLINE void CXTPTabManagerItem::SetClosable(BOOL bClosable) {
  1942. m_bClosable = bClosable;
  1943. }
  1944. AFX_INLINE void CXTPTabManagerItem::SetImageIndex(int nImage) {
  1945. if (m_nImage != nImage) { m_nImage = nImage; m_pTabManager->Reposition(); }
  1946. }
  1947. AFX_INLINE int CXTPTabManagerItem::GetButtonLength() const {
  1948. return m_nButtonLength;
  1949. }
  1950. AFX_INLINE int CXTPTabManagerItem::GetContentLength() const {
  1951. return m_nContentLength;
  1952. }
  1953. AFX_INLINE void CXTPTabManagerItem::SetTooltip(LPCTSTR lpszTooltip) {
  1954. m_strToolTip = lpszTooltip;
  1955. }
  1956. AFX_INLINE int CXTPTabManagerItem::GetItemRow() const {
  1957. return m_nItemRow;
  1958. }
  1959. AFX_INLINE BOOL CXTPTabManagerItem::IsItemShrinked() const {
  1960. return m_nButtonLength < m_nContentLength;
  1961. }
  1962. AFX_INLINE CXTPTabManagerNavigateButtons* CXTPTabManagerItem::GetNavigateButtons() {
  1963. return &m_arrNavigateButtons;
  1964. }
  1965. //////////////////////////////////////////////////////////////////////////
  1966. // CXTPTabManagerNavigateButton
  1967. AFX_INLINE void CXTPTabManagerNavigateButton::SetFlags(XTPTabNavigateButtonFlags dwFlags) {
  1968. m_dwFlags = dwFlags;
  1969. }
  1970. AFX_INLINE XTPTabNavigateButtonFlags CXTPTabManagerNavigateButton::GetFlags() const {
  1971. return m_dwFlags;
  1972. }
  1973. AFX_INLINE BOOL CXTPTabManagerNavigateButton::IsEnabled() const {
  1974. return m_bEnabled;
  1975. }
  1976. AFX_INLINE BOOL CXTPTabManagerNavigateButton::IsPressed() const {
  1977. return m_bPressed;
  1978. }
  1979. AFX_INLINE BOOL CXTPTabManagerNavigateButton::IsHighlighted() const {
  1980. return m_pManager->m_pHighlightedNavigateButton == this;
  1981. }
  1982. AFX_INLINE CRect CXTPTabManagerNavigateButton::GetRect() const {
  1983. return m_rcButton;
  1984. }
  1985. AFX_INLINE BOOL CXTPTabManagerNavigateButton::IsVisible() const {
  1986. return !m_rcButton.IsRectEmpty();
  1987. }
  1988. AFX_INLINE UINT CXTPTabManagerNavigateButton::GetID() const {
  1989. return m_nID;
  1990. }
  1991. AFX_INLINE void CXTPTabManagerNavigateButton::SetTooltip(LPCTSTR lpszTooltip) {
  1992. m_strToolTip = lpszTooltip;
  1993. }
  1994. AFX_INLINE CString CXTPTabManagerNavigateButton::GetTooltip() const {
  1995. return m_strToolTip;
  1996. }
  1997. AFX_INLINE CXTPTabManagerItem* CXTPTabManagerNavigateButton::GetItem() const {
  1998. return m_pItem;
  1999. }
  2000. //////////////////////////////////////////////////////////////////////////
  2001. // CXTPTabManager
  2002. AFX_INLINE CXTPTabPaintManager::CAppearanceSet* CXTPTabManager::GetAppearanceSet() const {
  2003. return GetPaintManager()->GetAppearanceSet();
  2004. }
  2005. AFX_INLINE CXTPTabPaintManager::CColorSet* CXTPTabManager::GetColorSet() const {
  2006. return GetPaintManager()->GetColorSet();
  2007. }
  2008. AFX_INLINE XTPTabAppearanceStyle CXTPTabManager::GetAppearance() const {
  2009. return GetPaintManager()->GetAppearance();
  2010. }
  2011. AFX_INLINE XTPTabColorStyle CXTPTabManager::GetColor() const {
  2012. return GetPaintManager()->GetColor();
  2013. }
  2014. AFX_INLINE int CXTPTabManager::GetItemCount() const {
  2015. return (int)m_arrItems.GetSize();
  2016. }
  2017. AFX_INLINE CXTPTabManagerItem* CXTPTabManager::GetItem(int nIndex) const {
  2018. return nIndex >= 0 && nIndex < GetItemCount() ? m_arrItems[nIndex] : NULL;
  2019. }
  2020. AFX_INLINE int CXTPTabManager::GetNavigateButtonCount() const {
  2021. return (int)m_arrNavigateButtons.GetSize();
  2022. }
  2023. AFX_INLINE CXTPTabManagerNavigateButton* CXTPTabManager::GetNavigateButton(int nIndex) const {
  2024. return nIndex >= 0 && nIndex < GetNavigateButtonCount() ? m_arrNavigateButtons[nIndex] : NULL;
  2025. }
  2026. AFX_INLINE CXTPTabManagerItem* CXTPTabManager::GetSelectedItem() const {
  2027. return m_pSelected;
  2028. }
  2029. AFX_INLINE BOOL CXTPTabManager::IsHorizontalPosition() const {
  2030. return (GetPosition() == xtpTabPositionBottom || GetPosition() == xtpTabPositionTop);
  2031. }
  2032. AFX_INLINE int CXTPTabManager::GetRectLength(CRect rc) const {
  2033. if (IsHorizontalPosition()) return rc.Width();
  2034. return rc.Height();
  2035. }
  2036. AFX_INLINE int CXTPTabManager::GetHeaderOffset() const {
  2037. return m_nHeaderOffset;
  2038. }
  2039. AFX_INLINE void CXTPTabManager::OnNavigateButtonClick(UINT) {
  2040. }
  2041. AFX_INLINE void CXTPTabManager::OnNavigateButtonClick(CXTPTabManagerNavigateButton* pButton) {
  2042. OnNavigateButtonClick(pButton->GetID());
  2043. }
  2044. AFX_INLINE BOOL CXTPTabManager::IsAllowReorder() const {
  2045. return m_bAllowReorder;
  2046. }
  2047. AFX_INLINE void CXTPTabManager::SetAllowReorder(BOOL bAllowReorder) {
  2048. m_bAllowReorder = bAllowReorder;
  2049. }
  2050. AFX_INLINE void CXTPTabManager::SetPaintManager(CXTPTabPaintManager* /*pPaintManager*/) {
  2051. }
  2052. AFX_INLINE BOOL CXTPTabManager::IsActive() const {
  2053. return m_bActive;
  2054. }
  2055. AFX_INLINE CRect CXTPTabManager::GetControlRect() const {
  2056. return m_rcControl;
  2057. }
  2058. AFX_INLINE CRect CXTPTabManager::GetClientRect() const {
  2059. return m_rcClient;
  2060. }
  2061. AFX_INLINE CRect CXTPTabManager::GetHeaderRect() const {
  2062. return m_rcHeaderRect;
  2063. }
  2064. AFX_INLINE BOOL CXTPTabManager::IsMouseLocked() const {
  2065. return FALSE;
  2066. }
  2067. AFX_INLINE int CXTPTabManager::GetRowCount() const {
  2068. return m_pRowIndexer->m_nRowCount;
  2069. }
  2070. AFX_INLINE BOOL CXTPTabManager::HeaderHasFocus() const {
  2071. return FALSE;
  2072. }
  2073. AFX_INLINE BOOL CXTPTabManagerItem::IsFocused() const {
  2074. return IsSelected() && m_pTabManager->HeaderHasFocus();
  2075. }
  2076. AFX_INLINE CXTPMarkupUIElement* CXTPTabManagerItem::GetMarkupUIElement() const {
  2077. return m_pMarkupUIElement;
  2078. }
  2079. AFX_INLINE CXTPTabManager::ROW_ITEMS* CXTPTabManager::CRowIndexer::GetRowItems() const {
  2080. return m_pRowItems;
  2081. }
  2082. AFX_INLINE CXTPTabManagerNavigateButtons* CXTPTabManager::GetNavigateButtons() {
  2083. return &m_arrNavigateButtons;
  2084. }
  2085. AFX_INLINE void CXTPTabManager::OnItemHandleChanged(CXTPTabManagerItem*, HWND, HWND) {
  2086. }
  2087. AFX_INLINE BOOL CXTPTabManager::DrawParentBackground(CDC* /*pDC*/, CRect /*rc*/) {
  2088. return FALSE;
  2089. }
  2090. AFX_INLINE void CXTPTabManager::ShowCloseItemButton(XTPTabNavigateButtonFlags bCloseItemButton) {
  2091. m_bCloseItemButton = bCloseItemButton;
  2092. }
  2093. AFX_INLINE CXTPMarkupContext* CXTPTabManager::GetMarkupContext() const {
  2094. return m_pMarkupContext;
  2095. }
  2096. #endif // !defined(__XTPTABMANAGER_H__)