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

对话框与窗口

开发平台:

Visual C++

  1. // XTPRibbonBar.h: interface for the CXTPRibbonBar class.
  2. //
  3. // This file is a part of the XTREME RIBBON 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(__XTPRIBBONBAR_H__)
  22. #define __XTPRIBBONBAR_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. class CXTPRibbonTheme;
  28. class CXTPRibbonQuickAccessControls;
  29. class CXTPRibbonTab;
  30. class CXTPRibbonControlTab;
  31. class CXTPTabPaintManager;
  32. class CXTPRibbonBar;
  33. class CXTPRibbonGroup;
  34. class CXTPOffice2007FrameHook;
  35. class CXTPRibbonTabContextHeaders;
  36. class CXTPRibbonGroups;
  37. #include "CommandBars/XTPControls.h"
  38. #include "CommandBars/XTPMenuBar.h"
  39. #include "CommandBars/XTPPopupBar.h"
  40. #include "XTPRibbonPopups.h"
  41. //===========================================================================
  42. // Summary:
  43. //     CXTPRibbonBar is a CXTPMenuBar derived class, It represents Ribbon control from Office 2007.
  44. // Example:
  45. //     The following code sample demonstrates how to create CXTPRibbonBar:
  46. // <code>
  47. // CXTPRibbonBar* pRibbonBar = (CXTPRibbonBar*)pCommandBars->Add(_T("The Ribbon"), xtpBarTop, RUNTIME_CLASS(CXTPRibbonBar));
  48. // </code>
  49. //===========================================================================
  50. class _XTP_EXT_CLASS CXTPRibbonBar : public CXTPMenuBar, public CXTPRibbonScrollableBar
  51. {
  52. private:
  53. class CControlCaptionButton;
  54. class CControlQuickAccessMorePopup;
  55. class CControlQuickAccessCommand;
  56. private:
  57. DECLARE_XTP_COMMANDBAR(CXTPRibbonBar)
  58. public:
  59. //-----------------------------------------------------------------------
  60. // Summary:
  61. //     Constructs a CXTPRibbonBar object
  62. //-----------------------------------------------------------------------
  63. CXTPRibbonBar();
  64. //-----------------------------------------------------------------------
  65. // Summary:
  66. //     Destroys a CXTPRibbonBar object, handles cleanup and deallocation
  67. //-----------------------------------------------------------------------
  68. virtual ~CXTPRibbonBar();
  69. public:
  70. //-----------------------------------------------------------------------
  71. // Summary:
  72. //     Cal this method to add new tab for ribbon bar
  73. // Parameters:
  74. //     lpszCaption - Caption of tab to be added
  75. //     nID         - Identifier of tab to be added
  76. // Returns:
  77. //     Pointer to new CXTPRibbonTab object
  78. // See Also: InsertTab
  79. //-----------------------------------------------------------------------
  80. CXTPRibbonTab* AddTab(LPCTSTR lpszCaption);
  81. CXTPRibbonTab* AddTab(int nID); // <combine CXTPRibbonBar::AddTab@LPCTSTR>
  82. //-----------------------------------------------------------------------
  83. // Summary:
  84. //     Cal this method to insert new tab for ribbon bar to specified position
  85. // Parameters:
  86. //     nItem       - Position to insert new tab
  87. //     lpszCaption - Caption of tab to be added
  88. //     nID         - Identifier of tab
  89. // Returns:
  90. //     Pointer to new CXTPRibbonTab object
  91. // See Also: AddTab
  92. //-----------------------------------------------------------------------
  93. CXTPRibbonTab* InsertTab(int nItem, int nID);
  94. CXTPRibbonTab* InsertTab(int nItem, LPCTSTR lpszCaption, int nID = 0); // <combine CXTPRibbonBar::InsertTab@int@int>
  95. //-----------------------------------------------------------------------
  96. // Summary:
  97. //     Cal this method to get current selected tab
  98. // Returns:
  99. //     Pointer to current selected CXTPRibbonTab object
  100. // See Also: SetCurSel
  101. //-----------------------------------------------------------------------
  102. CXTPRibbonTab* GetSelectedTab() const;
  103. //-----------------------------------------------------------------------
  104. // Summary:
  105. //     Cal this method to get tab in specified position
  106. // Parameters:
  107. //     nIndex - Index of tab to retrieve
  108. // Returns:
  109. //     Pointer to CXTPRibbonTab object in specified position
  110. // See Also: GetTabCount
  111. //-----------------------------------------------------------------------
  112. CXTPRibbonTab* GetTab(int nIndex) const;
  113. //-----------------------------------------------------------------------
  114. // Summary:
  115. //     Cal this method to find tab by its identifier
  116. // Parameters:
  117. //     nId - Identifier of tab to be found
  118. // Returns:
  119. //     Pointer to CXTPRibbonTab object with specified identifier
  120. // See Also: FindGroup
  121. //-----------------------------------------------------------------------
  122. CXTPRibbonTab* FindTab(int nId) const;
  123. //-----------------------------------------------------------------------
  124. // Summary:
  125. //     Cal this method to find group by its identifier
  126. // Parameters:
  127. //     nId - Identifier of group to be found
  128. // Returns:
  129. //     Pointer to CXTPRibbonGroup object with specified identifier
  130. // See Also: FindTab
  131. //-----------------------------------------------------------------------
  132. CXTPRibbonGroup* FindGroup(int nId) const;
  133. //-----------------------------------------------------------------------
  134. // Summary:
  135. //     Retrieves the number of tabs in the ribbon bar.
  136. // Returns:
  137. //     Number of tabs in the ribbon bar.
  138. // See Also: GetTab
  139. //-----------------------------------------------------------------------
  140. int GetTabCount() const;
  141. //-----------------------------------------------------------------------
  142. // Summary:
  143. //     Retrieves ribbon paint manager.
  144. // Returns:
  145. //     Pointer to CXTPRibbonTheme object
  146. // See Also: AddTab
  147. //-----------------------------------------------------------------------
  148. CXTPRibbonTheme* GetRibbonPaintManager() const;
  149. //-----------------------------------------------------------------------
  150. // Summary:
  151. //     Call this method to select tab.
  152. // Parameters:
  153. //     nIndex - Index of tab to be selected
  154. // See Also: GetSelectedTab
  155. //-----------------------------------------------------------------------
  156. void SetCurSel(int nIndex);
  157. //-----------------------------------------------------------------------
  158. // Summary:
  159. //     Call this function to get the size of the command bar button.
  160. // Returns:
  161. //     The width and height values of the command bar button.
  162. //-----------------------------------------------------------------------
  163. CSize GetButtonSize() const;
  164. //-----------------------------------------------------------------------
  165. // Summary:
  166. //     Call this method to get select tab index.
  167. // See Also: SetCurSel
  168. //-----------------------------------------------------------------------
  169. int GetCurSel() const;
  170. //-----------------------------------------------------------------------
  171. // Summary:
  172. //     Call this member to get a pointer to the tab paint manager.
  173. //     The tab paint manager is used to customize the appearance of
  174. //     CXTPTabManagerItem objects and the tab manager.  I.e. Tab colors,
  175. //     styles, etc...  This member must be overridden in
  176. //     derived classes.
  177. // Returns:
  178. //     Pointer to CXTPTabPaintManager that contains the visual elements
  179. //     of the tabs.
  180. //-----------------------------------------------------------------------
  181. CXTPTabPaintManager* GetTabPaintManager() const;
  182. //-----------------------------------------------------------------------
  183. // Summary:
  184. //     Call this method to get highlighted group
  185. // Returns:
  186. //     CXTPRibbonGroup object under mouse cursor
  187. // See Also: CXTPRibbonGroup
  188. //-----------------------------------------------------------------------
  189. CXTPRibbonGroup* GetHighlightedGroup() const;
  190. //-----------------------------------------------------------------------
  191. // Summary:
  192. //     Determines if groups part of ribbon bar is visible
  193. // Returns:
  194. //     TRUE if groups are visible
  195. // See Also: SetGroupsVisible
  196. //-----------------------------------------------------------------------
  197. BOOL IsGroupsVisible() const;
  198. //-----------------------------------------------------------------------
  199. // Summary:
  200. //     Determines if tabs part of ribbon bar is visible
  201. // Returns:
  202. //     TRUE if tabs are visible
  203. // See Also: SetTabsVisible
  204. //-----------------------------------------------------------------------
  205. BOOL IsTabsVisible() const;
  206. //-----------------------------------------------------------------------
  207. // Summary:
  208. //     Determines if ribbon bar is visible
  209. //-----------------------------------------------------------------------
  210. BOOL IsRibbonBarVisible() const;
  211. //-----------------------------------------------------------------------
  212. // Summary:
  213. //     Call this member function to show or hide the ribbon.
  214. // Parameters:
  215. //     bVisible - TRUE to show the ribbon; FALSE to hide.
  216. //-----------------------------------------------------------------------
  217. virtual void SetVisible(BOOL bVisible);
  218. //-----------------------------------------------------------------------
  219. // Summary:
  220. //     Call this method to hide/show groups part of ribbon bar
  221. // Parameters:
  222. //     bVisible - TRUE to show groups
  223. // See Also: IsGroupsVisible
  224. //-----------------------------------------------------------------------
  225. void SetGroupsVisible(BOOL bVisible);
  226. //-----------------------------------------------------------------------
  227. // Summary:
  228. //     Call this method to hide/show tabs part of ribbon bar
  229. // Parameters:
  230. //     bVisible - TRUE to show tabs
  231. // See Also: IsTabsVisible
  232. //-----------------------------------------------------------------------
  233. void SetTabsVisible(BOOL bVisible);
  234. //-----------------------------------------------------------------------
  235. // Summary:
  236. //     Call this method to get CXTPRibbonControlTab that represents ribbon tabs
  237. //-----------------------------------------------------------------------
  238. CXTPRibbonControlTab* GetControlTab() const;
  239. //-----------------------------------------------------------------------
  240. // Summary:
  241. //     Call this method to set minimum width before ribbon bar disappear
  242. // Parameters:
  243. //     nMinVisibleWidth - Minimum width.
  244. // Remarks:
  245. //     Default value is 250 pixels
  246. // See Also: GetMinimumVisibleWidth
  247. //-----------------------------------------------------------------------
  248. void SetMinimumVisibleWidth(int nMinVisibleWidth);
  249. //-----------------------------------------------------------------------
  250. // Summary:
  251. //     Call this method to get minimum width before ribbon bar disappear
  252. // Returns:
  253. //     Minimum width before ribbon bar disappear.
  254. // See Also: SetMinimumVisibleWidth
  255. //-----------------------------------------------------------------------
  256. int GetMinimumVisibleWidth() const;
  257. //-----------------------------------------------------------------------
  258. // Summary:
  259. //     Retrieves collection of Quick Access controls.
  260. // Returns:
  261. //     Pointer to CXTPRibbonQuickAccessControls contained Quick Access controls.
  262. //-----------------------------------------------------------------------
  263. CXTPRibbonQuickAccessControls* GetQuickAccessControls() const;
  264. //-----------------------------------------------------------------------
  265. // Summary:
  266. //     Call this method to add ribbon top-left system button.
  267. // Parameters:
  268. //     nID - Identifier of system button
  269. // See Also: GetSystemButton
  270. //-----------------------------------------------------------------------
  271. CXTPControlPopup* AddSystemButton(int nID = 0);
  272. //-----------------------------------------------------------------------
  273. // Summary:
  274. //     Call this method to get ribbon top-left system button.
  275. // See Also: AddSystemButton
  276. //-----------------------------------------------------------------------
  277. CXTPControlPopup* GetSystemButton() const;
  278. //-----------------------------------------------------------------------
  279. // Summary:
  280. //     Call this member function to determine if the CommandBar is a
  281. //     CXTPRibbonBar.
  282. // Returns:
  283. //     Returns TRUE if the CommandBar is a CXTPRibbonBar, otherwise FALSE
  284. // See Also: CXTPCommandBar, CXTPRibbonBar
  285. //-----------------------------------------------------------------------
  286. virtual BOOL IsRibbonBar() const;
  287. //-----------------------------------------------------------------------
  288. // Summary:
  289. //     Call this member to remove all tab
  290. // See Also: RemoveTab
  291. //-----------------------------------------------------------------------
  292. void RemoveAllTabs();
  293. //-----------------------------------------------------------------------
  294. // Summary:
  295. //     Call this member to remove single tab
  296. // Parameters:
  297. //     nIndex - Index of tab to remove
  298. // See Also: RemoveTab
  299. //-----------------------------------------------------------------------
  300. void RemoveTab(int nIndex);
  301. //-----------------------------------------------------------------------
  302. // Summary:
  303. //     Call this method to be sure control is visible on ribbon bar
  304. // Parameters:
  305. //     pControl - CXTPControl child that need to check
  306. //-----------------------------------------------------------------------
  307. virtual void EnsureVisible(CXTPControl* pControl);
  308. public:
  309. //-----------------------------------------------------------------------
  310. // Summary:
  311. //     Call this method to enable Office 2007 frame.
  312. // Parameters:
  313. //     bEnable - TRUE to enable Office 2007 frame; FLASE - to disable
  314. // See Also: IsFrameThemeEnabled
  315. //-----------------------------------------------------------------------
  316. void EnableFrameTheme(BOOL bEnable = TRUE);
  317. //-----------------------------------------------------------------------
  318. // Summary:
  319. //     Determines if Office 2007 frame enabled
  320. // See Also: IsFrameThemeEnabled
  321. //-----------------------------------------------------------------------
  322. BOOL IsFrameThemeEnabled() const;
  323. //-----------------------------------------------------------------------
  324. // Summary:
  325. //     Call this method to show Quick Access controls below ribbon bar
  326. // Parameters:
  327. //     bBelow - TRUE to show below ribbon; FALSE - above.
  328. // See Also: IsQuickAccessBelowRibbon
  329. //-----------------------------------------------------------------------
  330. void ShowQuickAccessBelowRibbon(BOOL bBelow = TRUE);
  331. //-----------------------------------------------------------------------
  332. // Summary:
  333. //     Determine if Quick Access controls located below ribbon bar
  334. // See Also: ShowQuickAccessBelowRibbon
  335. //-----------------------------------------------------------------------
  336. BOOL IsQuickAccessBelowRibbon() const;
  337. //-----------------------------------------------------------------------
  338. // Summary:
  339. //     Call this method to show/hide quick access
  340. // Parameters:
  341. //     bShow - TRUE to show quick access; FALSE to hide
  342. // See Also: IsQuickAccessVisible, ShowQuickAccessBelowRibbon
  343. //-----------------------------------------------------------------------
  344. void ShowQuickAccess(BOOL bShow = TRUE);
  345. //-----------------------------------------------------------------------
  346. // Summary:
  347. //     Determines if quick access is visible
  348. // Returns:
  349. //     TRUE if quick access is visible
  350. // See Also: ShowQuickAccess
  351. //-----------------------------------------------------------------------
  352. BOOL IsQuickAccessVisible() const;
  353. //-----------------------------------------------------------------------
  354. // Summary:
  355. //     Call this method to allow same controls for quick access
  356. // Parameters:
  357. //     bAllow - TRUE to allow add same controls for quick access
  358. // See Also: IsAllowQuickAccessDuplicates, ShowQuickAccessBelowRibbon
  359. //-----------------------------------------------------------------------
  360. void AllowQuickAccessDuplicates(BOOL bAllow);
  361. //-----------------------------------------------------------------------
  362. // Summary:
  363. //     Call this method to allow customization for quick access
  364. // Parameters:
  365. //     bAllow - TRUE to allow customization for quick access
  366. // See Also: IsAllowQuickAccessDuplicates, ShowQuickAccessBelowRibbon
  367. //-----------------------------------------------------------------------
  368. void AllowQuickAccessCustomization(BOOL bAllow);
  369. //-----------------------------------------------------------------------
  370. // Summary:
  371. //     Determines if user can add 2 or more same controls to quick access
  372. // Returns: TRUE if duplicates allowed
  373. // See Also: AllowQuickAccessDuplicates
  374. //-----------------------------------------------------------------------
  375. BOOL IsAllowQuickAccessDuplicates() const;
  376. //-----------------------------------------------------------------------
  377. // Summary:
  378. //     Call this method to select next or previous tab
  379. // Parameters:
  380. //     bNext - TRUE to select next
  381. //-----------------------------------------------------------------------
  382. void SelectNextTab(BOOL bNext);
  383. //-----------------------------------------------------------------------
  384. // Summary:
  385. //     Call this method to minimize Ribbon Bar
  386. // Parameters:
  387. //     bMinimized - TRUE to minimize Ribbon Bar.
  388. //-----------------------------------------------------------------------
  389. virtual void SetRibbonMinimized(BOOL bMinimized);
  390. //-----------------------------------------------------------------------
  391. // Summary:
  392. //     Determines if ribbon bar is minimized
  393. //-----------------------------------------------------------------------
  394. BOOL IsRibbonMinimized() const;
  395. //-----------------------------------------------------------------------
  396. // Summary:
  397. //     Call this method to disable minimize feature of Ribbon Bar
  398. // Parameters:
  399. //     bAllow - TRUE to allow minimize ribbon bar; FALSE to forbid
  400. //-----------------------------------------------------------------------
  401. void AllowMinimize(BOOL bAllow);
  402. public:
  403. //-----------------------------------------------------------------------
  404. // Summary:
  405. //     When switching tabs, RebuildControls first deletes all the controls
  406. //     from the old tab groups.  Then controls are added to the tab groups
  407. //     of the tab to be selected.  Finally, the new tab is selected.
  408. // Parameters:
  409. //     pSelected - Tab to be selected.
  410. // See Also: CXTPRibbonControlTab::SetSelectedItem, CXTPRibbonTab::GetGroups
  411. //-----------------------------------------------------------------------
  412. void RebuildControls(CXTPRibbonTab* pSelected);
  413. //-----------------------------------------------------------------------
  414. // Summary:
  415. //     Gets the bounding rectangle for the ribbon tabs.
  416. // Returns:
  417. //     Bounding rectangle for the ribbon tabs.
  418. // See Also: CXTPRibbonThemeOffice2007Theme::FillRibbonBar
  419. //-----------------------------------------------------------------------
  420. CRect GetTabControlRect() const;
  421. //-----------------------------------------------------------------------
  422. // Summary:
  423. //     Gets the bounding rectangle for the ribbon caption.
  424. // Returns:
  425. //     Bounding rectangle for the ribbon caption.
  426. // See Also: GetCaptionTextRect, GetQuickAccessRect, GetTabControlRect
  427. //-----------------------------------------------------------------------
  428. CRect GetCaptionRect() const;
  429. //-----------------------------------------------------------------------
  430. // Summary:
  431. //     Gets the bounding rectangle for the ribbon caption text.
  432. // Returns:
  433. //     Bounding rectangle for the ribbon caption text.
  434. // See Also: GetCaptionRect, GetQuickAccessRect, GetTabControlRect
  435. //-----------------------------------------------------------------------
  436. CRect GetCaptionTextRect() const;
  437. //-----------------------------------------------------------------------
  438. // Summary:
  439. //     Gets the bounding rectangle for the ribbon Quick Access controls.
  440. // Returns:
  441. //     Bounding rectangle for the ribbon  Quick Access controls.
  442. // See Also: GetCaptionRect, GetCaptionTextRect, GetTabControlRect
  443. //-----------------------------------------------------------------------
  444. CRect GetQuickAccessRect() const;
  445. //-----------------------------------------------------------------------
  446. // Summary:
  447. //     This member function determines which ribbon group,
  448. //     if any, is at a specified position.
  449. // Parameters:
  450. //     point  - A CPoint that contains the coordinates of the point to test.
  451. // Returns:
  452. //      The CXTPRibbonGroup that is at the specified point, if no group is
  453. //      at the point, then NULL is returned.
  454. //-----------------------------------------------------------------------
  455. CXTPRibbonGroup* HitTestGroup(CPoint point) const;
  456. //-----------------------------------------------------------------------
  457. // Summary:
  458. //     This method retrieves tabs area height
  459. // See Also: GetGroupsHeight
  460. //-----------------------------------------------------------------------
  461. virtual int GetTabsHeight() const;
  462. //-----------------------------------------------------------------------
  463. // Summary:
  464. //     This method retrieves Quick Access area height
  465. // See Also: GetGroupsHeight, GetTabsHeight
  466. //-----------------------------------------------------------------------
  467. int GetQuickAccessHeight() const;
  468. //-----------------------------------------------------------------------
  469. // Summary:
  470. //     Calculates Quick Access area height
  471. //-----------------------------------------------------------------------
  472. int CalcQuickAccessHeight();
  473. //-----------------------------------------------------------------------
  474. // Summary:
  475. //     This method retrieves group area height;
  476. // See Also: GetTabsHeight
  477. //-----------------------------------------------------------------------
  478. virtual int GetGroupsHeight();
  479. //-----------------------------------------------------------------------
  480. // Summary:
  481. //     Retrieves Groups bounding rectangle
  482. //-----------------------------------------------------------------------
  483. CRect GetGroupsRect() const;
  484. //-----------------------------------------------------------------------
  485. // Summary:
  486. //     This method calculates groups height using GetLargeIconSize method and height of captions
  487. // Returns: Height of ribbon groups
  488. // See Also: GetGroupsHeight
  489. //-----------------------------------------------------------------------
  490. virtual int CalcGroupsHeight();
  491. //-----------------------------------------------------------------------
  492. // Summary:
  493. //     Call this method to set height of the ribbon groups
  494. // Parameters:
  495. //     nHeight - Height of groups to set
  496. // See Also: GetTabsHeight
  497. //-----------------------------------------------------------------------
  498. void SetGroupsHeight(int nHeight);
  499. //-----------------------------------------------------------------------
  500. // Summary:
  501. //     Call this member to get caption height of ribbon bar
  502. // Returns: Caption height in pixels
  503. // See Also: CalcGroupsHeight
  504. //-----------------------------------------------------------------------
  505. int GetCaptionHeight() const;
  506. //-----------------------------------------------------------------------
  507. // Summary:
  508. //     This method retrieves Context Headers collection;
  509. // Returns:
  510. //     Pointer to CXTPRibbonTabContextHeaders class contained
  511. //     CXTPRibbonTabContextHeader collection
  512. // See Also: CXTPRibbonTabContextHeader
  513. //-----------------------------------------------------------------------
  514. CXTPRibbonTabContextHeaders* GetContextHeaders() const;
  515. //-----------------------------------------------------------------------
  516. // Summary:
  517. //     Determines if control belongs to quick access controls.
  518. // Parameters:
  519. //     pControl - Control to test
  520. // Returns:
  521. //     TRUE if control located in quick access area.
  522. //-----------------------------------------------------------------------
  523. BOOL IsQuickAccessControl(CXTPControl* pControl) const;
  524. //-----------------------------------------------------------------------
  525. // Summary:
  526. //     Determines if control can be added to quick access controls.
  527. // Parameters:
  528. //     pControl - Control to test
  529. // Returns:
  530. //     TRUE if control can be added in quick access area.
  531. //-----------------------------------------------------------------------
  532. virtual BOOL IsAllowQuickAccessControl(CXTPControl* pControl);
  533. //-----------------------------------------------------------------------
  534. // Summary:
  535. //     This method is called to draw the command bar in the given context.
  536. // Parameters:
  537. //     pDC - Pointer to a valid device context
  538. //     rcClipBox - The rectangular area of the control that is invalid
  539. //-----------------------------------------------------------------------
  540. virtual void DrawCommandBar(CDC* pDC, CRect rcClipBox);
  541. //-----------------------------------------------------------------------
  542. // Summary:
  543. //     Returns CXTPOffice2007FrameHook hook window used to skin frame.
  544. // See Also: EnableFrameTheme
  545. //-----------------------------------------------------------------------
  546. CXTPOffice2007FrameHook* GetFrameHook() const;
  547. //-----------------------------------------------------------------------
  548. // Summary:
  549. //     Determines if Vista Glass Effect enabled for Ribbon Bar.
  550. //-----------------------------------------------------------------------
  551. BOOL IsDwmEnabled() const;
  552. //-----------------------------------------------------------------------
  553. // Summary:
  554. //     Call this method to set custom font height for ribbon bar
  555. // Parameters:
  556. //     nFontHeight - Font height to set
  557. //-----------------------------------------------------------------------
  558. void SetFontHeight(int nFontHeight);
  559. //-----------------------------------------------------------------------
  560. // Summary:
  561. //     Determines font height used for Ribbon Bar
  562. //-----------------------------------------------------------------------
  563. int GetFontHeight() const;
  564. //-----------------------------------------------------------------------
  565. // Summary:
  566. //     Determines if caption part of ribbon is visible
  567. //-----------------------------------------------------------------------
  568. BOOL IsCaptionVisible() const;
  569. //-----------------------------------------------------------------------
  570. // Summary:
  571. //     This method allow show/hide caption if frame theme is not enabled.
  572. // Parameters:
  573. //     bShowCaption - TRUE to show caption if frame theme is not enabled.
  574. //-----------------------------------------------------------------------
  575. void ShowCaptionAlways(BOOL bShowCaption);
  576. //-----------------------------------------------------------------------
  577. // Summary:
  578. //     Call this member function to get the size of a toolbar icon.
  579. // See Also:
  580. //     GetLargeIconSize
  581. //-----------------------------------------------------------------------
  582. virtual CSize GetIconSize() const;
  583. //-----------------------------------------------------------------------
  584. // Summary:
  585. //     Call this method to get pointer to quick access button
  586. // Returns:
  587. //     Pointer to quick access button
  588. //-----------------------------------------------------------------------
  589. CXTPControl* GetControlQuickAccess() const;
  590. BOOL IsKeyboardCuesVisible() const;
  591. protected:
  592. //-----------------------------------------------------------------------
  593. // Summary:
  594. //     This virtual method called when tab is about to be changed.
  595. // Parameters:
  596. //     pTab - Tab to be selected
  597. // Returns:
  598. //     returns TRUE to cancel tab changing, FALSE to allow.
  599. //-----------------------------------------------------------------------
  600. virtual BOOL OnTabChanging(CXTPRibbonTab* pTab);
  601. //-----------------------------------------------------------------------
  602. // Summary:
  603. //     This virtual method called when current tab is changed.
  604. // Parameters:
  605. //     pTab - New selected tab
  606. //-----------------------------------------------------------------------
  607. virtual void OnTabChanged(CXTPRibbonTab* pTab);
  608. //{{AFX_CODEJOCK_PRIVATE
  609. protected:
  610. //-----------------------------------------------------------------------
  611. // Summary:
  612. //     This method is called to assign self identifiers for serialization process.
  613. // Parameters:
  614. //     nID             - Identifier to assign
  615. //     pCommandBarList - List of CommandBars.
  616. //     pParam          - Address of a XTP_COMMANDBARS_PROPEXCHANGE_PARAM structure.
  617. //-----------------------------------------------------------------------
  618. void GenerateCommandBarList(DWORD& nID, CXTPCommandBarList* pCommandBarList, XTP_COMMANDBARS_PROPEXCHANGE_PARAM* pParam);
  619. //-----------------------------------------------------------------------
  620. // Summary:
  621. //     This method is called in serialization process.to restore popups from list of command bars.
  622. // Parameters:
  623. //     pCommandBarList - List of CommandBars.
  624. //-----------------------------------------------------------------------
  625. void RestoreCommandBarList(CXTPCommandBarList* pCommandBarList);
  626. void DoPropExchange(CXTPPropExchange* pPX);
  627. void Copy(CXTPCommandBar* pCommandBar, BOOL bRecursive = FALSE);
  628. virtual CXTPPopupBar* CreateContextMenu(CXTPControl* pSelectedControl);
  629. virtual CXTPPopupBar* CreateMoreQuickAccessContextMenu();
  630. virtual BOOL ShouldSerializeBar();
  631. virtual void MergeToolBar(CXTPCommandBar* pCommandBar, BOOL bSilent);
  632. int HitTestCaption(CPoint point) const;
  633. void RepositionCaptionButtons();
  634. void RepositionContextHeaders();
  635. void AddCaptionButton(int nId, BOOL bAdd, BOOL bEnabled, CRect& rcCaption);
  636. BOOL ShrinkContextHeaders(int nLeft, int nRight);
  637. void ShowContextMenu(CPoint point, CXTPControl* pSelectedControl);
  638. virtual void CreateKeyboardTips();
  639. virtual void OnKeyboardTip(CXTPCommandBarKeyboardTip* pTip);
  640. virtual void OnCustomizeDrop(CXTPControl* pDataObject, DROPEFFECT& dropEffect, CPoint ptDrop, CPoint ptDrag);
  641. void RefreshSysButtons();
  642. virtual BOOL ProcessSpecialKey(XTPSpecialKey key);
  643. protected:
  644. public:
  645. virtual CSize CalcDockingLayout(int nLength, DWORD dwMode, int nWidth = 0);
  646. void Reposition(int cx, int cy);
  647. void RepositionGroups(CDC* pDC, CRect rcGroups);
  648. virtual BOOL PreviewAccel(UINT chAccel);
  649. virtual BOOL SetTrackingMode(int bMode, BOOL bSelectFirst = TRUE, BOOL bKeyboard = FALSE);
  650. int OnHookMessage(HWND /*hWnd*/, UINT nMessage, WPARAM& wParam, LPARAM& lParam, LRESULT& /*lResult*/);
  651. void OnRemoved();
  652. void OnGroupsScroll(BOOL bScrollLeft);
  653. int GetRibbonTopBorder() const;
  654. //}}AFX_CODEJOCK_PRIVATE
  655. protected:
  656. //{{AFX_CODEJOCK_PRIVATE
  657. DECLARE_MESSAGE_MAP()
  658. //{{AFX_VIRTUAL(CXTPRibbonBar)
  659. //}}AFX_VIRTUAL
  660. //{{AFX_MSG(CXTPRibbonBar)
  661. afx_msg void OnMouseLeave();
  662. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  663. afx_msg INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
  664. afx_msg void OnSysColorChange();
  665. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  666. afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
  667. void OnPopupRButtonUp(CXTPCommandBar* pCommandBar, CPoint point);
  668. afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  669. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  670. afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  671. afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
  672. afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
  673. afx_msg void OnCustomizePlaceQuickAccess(UINT nCommand);
  674. afx_msg LRESULT OnCustomizeCommand(WPARAM wParam, LPARAM lParam);
  675. afx_msg LRESULT OnNcHitTest(CPoint point);
  676. //}}AFX_MSG
  677. //}}AFX_CODEJOCK_PRIVATE
  678. protected:
  679. protected:
  680. CRect m_rcTabControl;           // Bounding rectangle of Tabs
  681. CRect m_rcGroups;               // Groups bounding rectangle
  682. CRect m_rcCaption;              // Caption bounding rectangle
  683. CRect m_rcCaptionText;          // Caption text bounding rectangle
  684. CRect m_rcHeader;               // Header bounding rectangle
  685. CRect m_rcQuickAccess;          // Quick access bounding rectangle
  686. BOOL m_bRibbonBarVisible;       // TRUE if ribbon bar visible
  687. BOOL m_bGroupsVisible;          // TRUE if groups is visible
  688. BOOL m_bTabsVisible;            // TRUE if tabs are visible
  689. BOOL m_bShowQuickAccessBelow;   // TRUE to show quick access controls below ribbon bar
  690. BOOL m_bShowQuickAccess;        // TRUE to show quick access
  691. BOOL m_bAllowQuickAccessDuplicates;         // TRUE to allow quick access duplicates
  692. BOOL m_bAllowQuickAccessCustomization;      // TRUE to allow quick access customization
  693. BOOL m_bGroupReducedChanged;    // Some group appear in resize handler
  694. int m_nQuickAccessHeight;           // Quick Access height
  695. BOOL m_bAllowMinimize;          // TRUE to allow minimize ribbon
  696. CXTPRibbonQuickAccessControls* m_pQuickAccessControls;      // Quick AccessControls (not used now)
  697. CXTPRibbonControlTab* m_pControlTab;        // Control tab pointer
  698. CXTPControl* m_pControlQuickAccess;         // Quick Access menu control
  699. CXTPControl* m_pControlQuickAccessMore;     // Quick Access more control
  700. CXTPControlPopup* m_pControlSystemButton;          // System button control
  701. BOOL m_bMinimizeOnDblClick;
  702. int m_nMinVisibleWidth;                     // Minimum width before ribbon bar disappears
  703. CXTPOffice2007FrameHook* m_pFrameHook;      // Office 2007 Frame hook
  704. CXTPRibbonTabContextHeaders* m_pContextHeaders;     // Context header collection
  705. int m_nGroupsHeight;            // Custom groups height
  706. BOOL m_bMinimized;              // TRUE if Ribbon currently minimized
  707. BOOL m_bShowCaptionAlways;      // TRUE to show caption even if EnableFrameTheme was not called.
  708. CString m_strCaptionText;       // Caption text
  709. private:
  710. friend class CXTPRibbonControlTab;
  711. friend class CXTPRibbonBarControlQuickAccessPopup;
  712. friend class CControlQuickAccessMorePopup;
  713. friend class CXTPRibbonGroup;
  714. friend class CXTPRibbonControls;
  715. friend class CXTPRibbonGroups;
  716. friend class CXTPRibbonTabPopupToolBar;
  717. };
  718. AFX_INLINE CRect CXTPRibbonBar::GetTabControlRect() const {
  719. return m_rcTabControl;
  720. }
  721. AFX_INLINE CXTPRibbonGroup* CXTPRibbonBar::GetHighlightedGroup() const {
  722. return m_pHighlightedGroup;
  723. }
  724. AFX_INLINE CXTPRibbonGroup* CXTPRibbonScrollableBar::GetHighlightedGroup() const {
  725. return m_pHighlightedGroup;
  726. }
  727. AFX_INLINE CXTPRibbonControlTab* CXTPRibbonBar::GetControlTab() const {
  728. return m_pControlTab;
  729. }
  730. AFX_INLINE void CXTPRibbonBar::SetMinimumVisibleWidth(int nMinVisibleWidth) {
  731. m_nMinVisibleWidth = nMinVisibleWidth;
  732. }
  733. AFX_INLINE int CXTPRibbonBar::GetMinimumVisibleWidth() const {
  734. return m_nMinVisibleWidth;
  735. }
  736. AFX_INLINE CRect CXTPRibbonBar::GetCaptionRect() const {
  737. return m_rcCaption;
  738. }
  739. AFX_INLINE CRect CXTPRibbonBar::GetCaptionTextRect() const {
  740. return m_rcCaptionText;
  741. }
  742. AFX_INLINE CRect CXTPRibbonBar::GetQuickAccessRect() const {
  743. return m_rcQuickAccess;
  744. }
  745. AFX_INLINE CXTPRibbonQuickAccessControls* CXTPRibbonBar::GetQuickAccessControls() const {
  746. return m_pQuickAccessControls;
  747. }
  748. AFX_INLINE CXTPControlPopup* CXTPRibbonBar::GetSystemButton() const {
  749. return m_pControlSystemButton;
  750. }
  751. AFX_INLINE BOOL CXTPRibbonBar::IsRibbonBarVisible() const {
  752. return m_bVisible && m_bRibbonBarVisible;
  753. }
  754. AFX_INLINE CXTPRibbonTabContextHeaders* CXTPRibbonBar::GetContextHeaders() const {
  755. return m_pContextHeaders;
  756. }
  757. AFX_INLINE BOOL CXTPRibbonBar::IsRibbonBar() const {
  758. return TRUE;
  759. }
  760. AFX_INLINE void CXTPRibbonBar::ShowQuickAccess(BOOL bShow) {
  761. m_bShowQuickAccess = bShow;
  762. OnRecalcLayout();
  763. }
  764. AFX_INLINE BOOL CXTPRibbonBar::IsQuickAccessVisible() const {
  765. return m_bShowQuickAccess;
  766. }
  767. AFX_INLINE void CXTPRibbonBar::AllowQuickAccessDuplicates(BOOL bAllow) {
  768. m_bAllowQuickAccessDuplicates = bAllow;
  769. }
  770. AFX_INLINE void CXTPRibbonBar::AllowQuickAccessCustomization(BOOL bAllow) {
  771. m_bAllowQuickAccessCustomization = bAllow;
  772. }
  773. AFX_INLINE BOOL CXTPRibbonBar::IsAllowQuickAccessDuplicates() const {
  774. return m_bAllowQuickAccessDuplicates;
  775. }
  776. AFX_INLINE void CXTPRibbonBar::SetGroupsHeight(int nHeight) {
  777. m_nGroupsHeight = nHeight;
  778. }
  779. AFX_INLINE CXTPOffice2007FrameHook* CXTPRibbonBar::GetFrameHook() const {
  780. return m_pFrameHook;
  781. }
  782. AFX_INLINE void CXTPRibbonBar::AllowMinimize(BOOL bAllow) {
  783. m_bAllowMinimize = bAllow;
  784. }
  785. AFX_INLINE CRect CXTPRibbonBar::GetGroupsRect() const {
  786. return m_rcGroups;
  787. }
  788. AFX_INLINE void CXTPRibbonBar::ShowCaptionAlways(BOOL bShowCaption) {
  789. m_bShowCaptionAlways = bShowCaption;
  790. }
  791. AFX_INLINE CXTPControl* CXTPRibbonBar::GetControlQuickAccess() const {
  792. return m_pControlQuickAccess;
  793. }
  794. #endif // !defined(__XTPRIBBONBAR_H__)