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

对话框与窗口

开发平台:

Visual C++

  1. // XTPRibbonGroup.h: interface for the CXTPRibbonGroup 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(__XTPRIBBONGROUP_H__)
  22. #define __XTPRIBBONGROUP_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. class CXTPRibbonGroups;
  28. class CXTPRibbonBar;
  29. class CXTPRibbonTab;
  30. class CXTPControl;
  31. class CXTPControlPopup;
  32. #include "CommandBars/XTPControlButton.h"
  33. #include "CommandBars/XTPControlPopup.h"
  34. #include "CommandBars/XTPCommandBarsDefines.h"
  35. //===========================================================================
  36. // Summary:
  37. //     Represents a single group that is added to a CXTPRibbonTab.
  38. // Remarks:
  39. //     Each CXTPRibbonTab can contain one or more CXTPRibbonGroup objects
  40. //     that are used to hold CXTPControl objects.  The Caption of
  41. //     a CXTPRibbonGroup is a title bar that visually "groups" the CXTPControl
  42. //     objects that have been added to the RibbonGroup Items Collection (CXTPRibbonGroup::GetAt).
  43. //
  44. //     Groups are added to the CXTPRibbonTab Groups Collection using the
  45. //     CXTPRibbonGroups::AddGroup and CXTPRibbonGroups::InsertAt methods.  Items are added to a group
  46. //     using the CXTPRibbonGroup::Add method.
  47. // See Also: CXTPRibbonGroup::GetAt
  48. //===========================================================================
  49. class _XTP_EXT_CLASS CXTPRibbonGroup : public CXTPCmdTarget
  50. {
  51. DECLARE_SERIAL(CXTPRibbonGroup)
  52. public:
  53. //-----------------------------------------------------------------------
  54. // Summary:
  55. //     Constructs a CXTPRibbonGroup object
  56. //-----------------------------------------------------------------------
  57. CXTPRibbonGroup();
  58. //-----------------------------------------------------------------------
  59. // Summary:
  60. //     Destroys a CXTPRibbonGroup object, handles cleanup and deallocation.
  61. //-----------------------------------------------------------------------
  62. virtual ~CXTPRibbonGroup();
  63. public:
  64. //-----------------------------------------------------------------------
  65. // Summary:
  66. //     Sets the text to display in the group title bar.
  67. // Parameters:
  68. //     lpszCaption - Text to display in the group title bar.
  69. // Remarks:
  70. //     The Caption is the text string that is displayed in the group's
  71. //     title bar.  The Caption of the group is initially set when it is
  72. //     added or inserted.
  73. // See Also: GetCaption, CXTPRibbonGroups::AddGroup, CXTPRibbonGroups::InsertAt
  74. //-----------------------------------------------------------------------
  75. void SetCaption(LPCTSTR lpszCaption);
  76. //-----------------------------------------------------------------------
  77. // Summary:
  78. //     Gets the text displayed in the group title bar.
  79. // Remarks:
  80. //     The Caption is the text string that is displayed in the group's
  81. //     title bar.  The Caption of the group is initially set when it is
  82. //     added or inserted.
  83. // Returns:
  84. //     Text displayed in the group title bar.
  85. // See Also: SetCaption, CXTPRibbonGroups::AddGroup, CXTPRibbonGroups::InsertAt
  86. //-----------------------------------------------------------------------
  87. CString GetCaption() const;
  88. //-----------------------------------------------------------------------
  89. // Summary:
  90. //     Sets the bounding rectangle for the group.
  91. // Parameters:
  92. //     rc - A CRect containing the bounding rectangle for the group.
  93. // Remarks:
  94. //     The rectangle is the size of the entire group, including the
  95. //     group caption and group popup if present.
  96. // See Also: GetRect
  97. //-----------------------------------------------------------------------
  98. virtual void SetRect(CRect rc);
  99. //-----------------------------------------------------------------------
  100. // Summary:
  101. //     Gets the bounding rectangle for the group.
  102. // Remarks:
  103. //     The rectangle is the size of the entire group, including the
  104. //     group caption and group popup if present.
  105. // Returns: A CRect containing the bounding rectangle for the group.
  106. // See Also: SetRect
  107. //-----------------------------------------------------------------------
  108. CRect GetRect() const;
  109. CRect GetCaptionRect() const;
  110. //-----------------------------------------------------------------------
  111. // Summary:
  112. //     The CXTPRibbonBar object the CXTPRibbonGroup belongs to.
  113. // Returns:
  114. //     A pointer to the CXTPRibbonBar object the CXTPRibbonGroup belongs to.
  115. //     This is the RibbonBar that the group is displayed in.
  116. // See Also: CXTPRibbonBar
  117. //-----------------------------------------------------------------------
  118. CXTPRibbonBar* GetRibbonBar() const;
  119. //-----------------------------------------------------------------------
  120. // Summary:
  121. //     The CXTPRibbonTab object the CXTPRibbonGroup belongs to.
  122. // Returns:
  123. //     A pointer to the CXTPRibbonTab object the CXTPRibbonGroup belongs to.
  124. //     This is the tab that the group is displayed in.
  125. // See Also: CXTPRibbonTab
  126. //-----------------------------------------------------------------------
  127. CXTPRibbonTab* GetParentTab() const;
  128. //-----------------------------------------------------------------------
  129. // Summary:
  130. //     Gets whether the group is currently highlighted.
  131. // Remarks:
  132. //     A group becomes highlighted when the mouse cursor is positioned
  133. //     over the group or any items in the group.
  134. // Returns:
  135. //     TRUE if the group is currently highlighted, FALSE otherwise.
  136. // See Also: CXTPRibbonBar::GetHighlightedGroup
  137. //-----------------------------------------------------------------------
  138. BOOL IsHighlighted() const;
  139. int IndexOf(CXTPControl* pControl) const;
  140. public:
  141. //-----------------------------------------------------------------------
  142. // Summary:
  143. //     Total number of CXTPControl objects that have been
  144. //     added to the CXTPRibbonGroup.
  145. // Returns:
  146. //     Integer containing the total number of CXTPControl objects that have been
  147. //     added to the CXTPRibbonGroup.
  148. // Remarks:
  149. //     A CXTPRibbonGroup is used to hold one ore more CXTPControl
  150. //     objects.  The total number of items can be found using GetCount.
  151. // See Also: CXTPRibbonGroup
  152. //-----------------------------------------------------------------------
  153. int GetCount() const;
  154. //-----------------------------------------------------------------------
  155. // Summary:
  156. //     Adds a CXTPControl to the ribbon group.
  157. // Parameters:
  158. //     controlType   - Type of control to add to the ribbon group.
  159. //     nId           - Identifier of the CXTPControl to be added.
  160. //     lpszParameter - The caption of the CXTPControl to be added.
  161. //     nBefore       - The index of an existing control that the new control
  162. //                     should will be inserted before.
  163. //     bTemporary    - A boolean value indicating whether the control is
  164. //                     temporary.  Temporary controls will not be saved
  165. //                     to the system registry when the application is closed,
  166. //                     and they will not be restored when the application
  167. //                     is opened.
  168. //     pControl      - Pointer to a CXTPControl to add to the ribbon group.
  169. // Remarks:
  170. //     The Add method allows CXTPControl objects to be added to the ribbon group.
  171. // Returns:
  172. //     Pointer to the CXTPControl object that was added to the ribbon group.
  173. // See Also: CXTPControl, GetAt, GetCount, RemoveAt, RemoveAll
  174. //-----------------------------------------------------------------------
  175. CXTPControl* Add(XTPControlType controlType, int nId, LPCTSTR lpszParameter = NULL, int nBefore = -1, BOOL bTemporary = FALSE);
  176. CXTPControl* Add(CXTPControl* pControl, int nId, LPCTSTR lpszParameter = NULL, int nBefore = -1, BOOL bTemporary = FALSE); // <combine CXTPRibbonGroup::Add@XTPControlType@int@LPCTSTR@int@BOOL>
  177. CXTPControl* AddClone(CXTPControl* pControl, int nBefore,  BOOL bRecursive = FALSE);
  178. //-----------------------------------------------------------------------
  179. // Summary:
  180. //     Adds a CXTPControl to the ribbon group.
  181. // Parameters:
  182. //     pControl - Control to add
  183. //     nBefore  - The index of an existing control that the new control
  184. //                should will be inserted before.
  185. // Returns:
  186. //     Pointer to the CXTPControl object that was added to the ribbon group.
  187. // See Also: Add
  188. //-----------------------------------------------------------------------
  189. CXTPControl* InsertAt(CXTPControl* pControl, int nBefore = -1);
  190. //-----------------------------------------------------------------------
  191. // Summary:
  192. //     Gets a CXTPControl object that has been added to the CXTPRibbonGroup
  193. //     at the specified index.
  194. // Parameters:
  195. //     nIndex - Index of the items to retrieve within the group's
  196. //              collection of controls.
  197. // Remarks:
  198. //     GetAt retrieves the CXTPControl from the m_arrControls items collection
  199. //     that contains all of the CXTPControl objects that have been added
  200. //     to the CXTPRibbonGroup.
  201. // Returns:
  202. //     The CXTPControl at the specified index.
  203. // See Also: m_arrControls, Add, RemoveAt, RemoveAll
  204. //-----------------------------------------------------------------------
  205. CXTPControl* GetAt(int nIndex) const;
  206. //-----------------------------------------------------------------------
  207. // Summary:
  208. //     Removes and item at the specified position in the group's
  209. //     collection of items.
  210. // Parameters:
  211. //     nIndex - Index of the item to remove from the group's
  212. //              collection of items.
  213. // Remarks:
  214. //     Removes an item by it's index from the group's collection of items.
  215. // See Also: m_arrControls, Add, GetAt, RemoveAll
  216. //-----------------------------------------------------------------------
  217. void RemoveAt(int nIndex);
  218. //-----------------------------------------------------------------------
  219. // Summary:
  220. //     Removes and item at the from collection of items.
  221. // Parameters:
  222. //     pControl - The item to remove from the group's
  223. //              collection of items.
  224. // See Also: RemoveAt, Add, GetAt, RemoveAll
  225. //-----------------------------------------------------------------------
  226. void Remove(CXTPControl* pControl);
  227. //-------------------------------------------------------------------------
  228. // Summary:
  229. //     Removes all of the items from the group.
  230. // See Also: m_arrControls, Add, GetAt, RemoveAt
  231. //-------------------------------------------------------------------------
  232. void RemoveAll();
  233. //-----------------------------------------------------------------------
  234. // Summary:
  235. //     Determines id the CXTPRibbonGroup is currently displayed as a
  236. //     group button.
  237. // Remarks:
  238. //     A single group button will be displayed if there is not enough
  239. //     room to display the items in the group.  A group popup is
  240. //     displayed when the button is clicked.  The popup contains all
  241. //     the items in the group.  When a group button is clicked, a
  242. //     CXTPControlPopup is displayed that contains the items of the group.
  243. //
  244. //     The m_nIconId specifies the Id of the image to use for the group
  245. //     button that is displayed when there is not enough room to display
  246. //     the items in the group.  No image will be displayed for the group
  247. //     button if m_nIconId is not set with SetIconId.
  248. //
  249. // Returns:
  250. //     TRUE if the group is displayed as a single group button, FALSE
  251. //     if the group is displayed normally.
  252. // See Also: SetIconId, GetIconId, GetControlGroupPopup
  253. //-----------------------------------------------------------------------
  254. BOOL IsReduced() const;
  255. //-----------------------------------------------------------------------
  256. // Summary:
  257. //     Call this member to set the group icon's identifier.  This is the Id of
  258. //     the image to use for the group button that is displayed when there
  259. //     is not enough room to display the items in the group.
  260. // Parameters:
  261. //     nId - Icon's identifier to be set.
  262. // Remarks:
  263. //      The m_nIconId specifies the Id of the image to use for the group button
  264. //      that is displayed when there is not enough room to display the items
  265. //      in the group.  When a group button is clicked, a CXTPControlPopup
  266. //      is displayed that contains the items of the group.  No image will
  267. //      be displayed for the group button if IconId is not set.
  268. // See Also: IsReduced, GetIconId, GetControlGroupPopup
  269. //-----------------------------------------------------------------------
  270. void SetIconId(int nId);
  271. //-----------------------------------------------------------------------
  272. // Summary:
  273. //     Call this member to get the icon's identifier.  This is the Id of
  274. //     the image to use for the group button that is displayed when there
  275. //     is not enough room to display the items in the group.
  276. // Remarks:
  277. //      The m_nIconId specifies the Id of the image to use for the group button
  278. //      that is displayed when there is not enough room to display the items
  279. //      in the group.  When a group button is clicked, a CXTPControlPopup
  280. //      is displayed that contains the items of the group.  No image will
  281. //      be displayed for the group button if IconId is not set.
  282. // Returns:
  283. //     An icon's identifier of the group.
  284. // See Also: IsReduced, SetIconId, GetControlGroupPopup
  285. //-----------------------------------------------------------------------
  286. int GetIconId() const;
  287. //-----------------------------------------------------------------------
  288. // Summary:
  289. //     Specifies whether to display an option button in the group caption.
  290. // Parameters:
  291. //     bShowOptionButton - TRUE to show an option button in the
  292. //                         group's caption, FALSE to hide the option
  293. //                         button if one was visible.
  294. // Remarks:
  295. //     The option button is typically used to launch a dialog associated
  296. //     with the group.  The Group Id(GetID) is used to identify which
  297. //     group's option button was clicked.
  298. // See Also: m_bShowOptionButton, GetID, CXTPRibbonPaintManager::DrawControlGroupOption
  299. //-----------------------------------------------------------------------
  300. void ShowOptionButton(BOOL bShowOptionButton = TRUE);
  301. //-----------------------------------------------------------------------
  302. // Summary:
  303. //     Determines if option button is visible
  304. // See Also: ShowOptionButton
  305. //-----------------------------------------------------------------------
  306. BOOL IsOptionButtonVisible() const;
  307. //-----------------------------------------------------------------------
  308. // Summary:
  309. //     Determines if group currently visible
  310. // See Also: SetVisible
  311. //-----------------------------------------------------------------------
  312. BOOL IsVisible() const;
  313. //-----------------------------------------------------------------------
  314. // Summary:
  315. //     Call this method to show/hide the group
  316. // Parameters:
  317. //     bVisible - TRUE to show group; FALSE to hide
  318. // See Also: IsVisible
  319. //-----------------------------------------------------------------------
  320. void SetVisible(BOOL bVisible);
  321. //-----------------------------------------------------------------------
  322. // Summary:
  323. //     Returns own index in parent group collection
  324. //-----------------------------------------------------------------------
  325. int GetIndex() const;
  326. //-----------------------------------------------------------------------
  327. // Summary:
  328. //     This method is called to copy parameter from one group to another
  329. // Parameters:
  330. //     pGroup - Group which parameter will be copied
  331. //-----------------------------------------------------------------------
  332. virtual void Copy(CXTPRibbonGroup* pGroup);
  333. //-----------------------------------------------------------------------
  334. // Summary:
  335. //     Gets the group's Id.
  336. // Remarks:
  337. //     The Id is used to identify the group.
  338. // Returns:
  339. //     Integer containing the group's identifier.
  340. // See Also: GetControlGroupPopup, GetControlGroupOption
  341. //-----------------------------------------------------------------------
  342. int GetID() const;
  343. //-----------------------------------------------------------------------
  344. // Summary:
  345. //     Call this method to set Identifier for group
  346. // Parameters:
  347. //     nId - The Id is used to identify the group.
  348. // See Also: GetID
  349. //-----------------------------------------------------------------------
  350. void SetID(int nId);
  351. //-----------------------------------------------------------------------
  352. // Summary:
  353. //     Determines if control grouping is used.
  354. // See Also: SetControlsGrouping
  355. //-----------------------------------------------------------------------
  356. BOOL IsControlsGrouping() const;
  357. //-----------------------------------------------------------------------
  358. // Summary:
  359. //     Call this method to group buttons in the group.
  360. // Parameters:
  361. //     bControlsGrouping - TRUE to use grouping for buttons
  362. // See Also: IsControlsGrouping
  363. //-----------------------------------------------------------------------
  364. void SetControlsGrouping(BOOL bControlsGrouping = TRUE);
  365. //-----------------------------------------------------------------------
  366. // Summary:
  367. //     Call this method to automatically center controls in group
  368. // Parameters:
  369. //     bControlsCentering - TRUE to center controls in group
  370. //-----------------------------------------------------------------------
  371. void SetControlsCentering(BOOL bControlsCentering = TRUE);
  372. //-----------------------------------------------------------------------
  373. // Summary:
  374. //     Draws the group and all of the controls in the group.
  375. // Parameters:
  376. //     pDC - Pointer to the device context in which to draw the group.
  377. //     rcClipBox - The rectangular area of the window that is invalid.
  378. //-----------------------------------------------------------------------
  379. virtual void Draw(CDC* pDC, CRect rcClipBox);
  380. virtual void DoPropExchange(CXTPPropExchange* pPX);
  381. //-----------------------------------------------------------------------
  382. // Summary:
  383. //     Call this method to prevent group to be reduced to button
  384. // Parameters:
  385. //     nAllowReduceLevel - Reduce Level to allow
  386. //-----------------------------------------------------------------------
  387. void AllowReduce(int nAllowReduceLevel = 0);
  388. public:
  389. //-----------------------------------------------------------------------
  390. // Summary:
  391. //     CXTPControl that represents the group's OptionButton (used to
  392. //     set tool tip and status bar text).
  393. // Remarks:
  394. //     GetControlGroupOption is only used to set the TooltipText and
  395. //     DescriptionText for the OptionButton.  No other propertiesmethods
  396. //     of the CXTPControl are used.
  397. // Returns:
  398. //     Pointer to the CXTPControl that represents the group's OptionButton.
  399. // See Also: CXTPRibbonPaintManager::DrawControlGroupOption
  400. //-----------------------------------------------------------------------
  401. CXTPControl* GetControlGroupOption() const;
  402. //-----------------------------------------------------------------------
  403. // Summary:
  404. //     Gets a pointer to the CXTPControlPopup that is used to display
  405. //     controls that are not currently visible in the group.
  406. // Remarks:
  407. //     A single group button will be displayed if there is not enough
  408. //     room to display the items in the group.  A group popup is displayed
  409. //     when the button is clicked.  The popup contains all the items in
  410. //     the group.  When a group button is clicked, a CXTPControlPopup
  411. //     is displayed that contains the items of the group.
  412. // Returns:
  413. //     CXTPControlPopup that is used to display
  414. //     controls that are not currently visible in the group.
  415. // See Also: IsReduced, CXTPRibbonPaintManager::DrawControlGroupPopup
  416. //-----------------------------------------------------------------------
  417. CXTPControlPopup* GetControlGroupPopup() const;
  418. //-----------------------------------------------------------------------
  419. // Summary:
  420. //     Call this member function to load the toolbar specified by nIDResource.
  421. // Parameters:
  422. //     nIDResource - Resource ID of the toolbar to be loaded.
  423. //     bLoadIcons - TRUE to load icons from application resources.
  424. // Returns:
  425. //     Nonzero if successful; otherwise 0.
  426. //-----------------------------------------------------------------------
  427. BOOL LoadToolBar(UINT nIDResource, BOOL bLoadIcons = TRUE);
  428. //-----------------------------------------------------------------------
  429. // Summary:
  430. //     Call this member to set the controls from the button array.
  431. // Parameters:
  432. //     pButtons - Pointer to an array of command Ids. It cannot be NULL.
  433. //     nCount   - Number of elements in the array pointed to by pButtons.
  434. // Returns:
  435. //     Nonzero if successful; otherwise 0.
  436. // See Also: LoadToolBar
  437. //-----------------------------------------------------------------------
  438. BOOL SetButtons(UINT* pButtons, int nCount);
  439. protected:
  440. //-----------------------------------------------------------------------
  441. // Summary:
  442. //     Gets the width and height of the group.
  443. // Parameters:
  444. //     pDC - Pointer to the device context the group is drawn on.
  445. // Remarks:
  446. //     The total width and height is determined based
  447. //     on how many controls are added to the group.  Regardless of how
  448. //     few controls are added, the minimum width of a group is 47 pixels
  449. //     and the minimum height is 85 pixels.
  450. // Returns:
  451. //     A CSize object containing the width and height of the group.
  452. // See Also: GetCount
  453. //-----------------------------------------------------------------------
  454. //virtual CSize GetSize(CDC* pDC);
  455. //-----------------------------------------------------------------------
  456. // Summary:
  457. //     Called automatically to reposition all controls in the group.
  458. //     For example, when the position/size of Ribbon Bar changes.
  459. // Parameters:
  460. //     pDC - Pointer to the device context in which to draw the group.
  461. //-----------------------------------------------------------------------
  462. virtual void RepositionControls(CDC* pDC);
  463. //-----------------------------------------------------------------------
  464. // Summary:
  465. //     This method is called when the group was added
  466. // See Also: OnGroupRemoved
  467. //-----------------------------------------------------------------------
  468. virtual void OnGroupAdded();
  469. //-----------------------------------------------------------------------
  470. // Summary:
  471. //     This method is called when the group was removed
  472. // See Also: OnGroupAdded
  473. //-----------------------------------------------------------------------
  474. virtual void OnGroupRemoved();
  475. //-----------------------------------------------------------------------
  476. // Summary:
  477. //     Calculates minimum width for the ribbon group
  478. // Parameters:
  479. //     pDC - Pointer to device context used to draw group
  480. // Returns:
  481. //     Minimum width of ribbon group
  482. // See Also: Draw
  483. //-----------------------------------------------------------------------
  484. virtual int GetMinimumWidth(CDC* pDC);
  485. protected:
  486. //-----------------------------------------------------------------------
  487. // Summary:
  488. //     This method is called before calculate size of ribbon group
  489. // Parameters:
  490. //     pDC - Pointer to device context used to draw group
  491. // See Also: OnAfterCalcSize
  492. //-----------------------------------------------------------------------
  493. virtual void OnBeforeCalcSize(CDC* pDC);
  494. //-----------------------------------------------------------------------
  495. // Summary:
  496. //     This method is called after size of ribbon group was calculated
  497. // See Also: OnBeforeCalcSize
  498. //-----------------------------------------------------------------------
  499. virtual void OnAfterCalcSize();
  500. //-----------------------------------------------------------------------
  501. // Summary:
  502. //     This method is called to find width of the ribbon group
  503. // Parameters:
  504. //     pDC - Pointer to device context used to draw group
  505. // Returns:
  506. //     Width of ribbon group
  507. // See Also: OnBeforeCalcSize, OnAfterCalcSize, GetMinimumWidth
  508. //-----------------------------------------------------------------------
  509. virtual int OnCalcDynamicSize(CDC* pDC);
  510. //-----------------------------------------------------------------------
  511. // Summary:
  512. ///    This method is called to decrease size of ribbon group
  513. // Parameters:
  514. //     nLevel - Reduce level
  515. //     nWidthAvail - Total pixels need to reduce
  516. // Returns: TRUE if group was reduced
  517. //-----------------------------------------------------------------------
  518. virtual BOOL OnReduceSize(int nLevel, int nWidthAvail);
  519. //-----------------------------------------------------------------------
  520. // Summary:
  521. ///    This method is called to increase size of ribbon group
  522. // Parameters:
  523. //     nWidthAvail - Total pixels need to increase
  524. // Returns: TRUE if group was increased
  525. //-----------------------------------------------------------------------
  526. virtual BOOL OnExtendSize(int nWidthAvail);
  527. //{{AFX_CODEJOCK_PRIVATE
  528. protected:
  529. void OnAdjustBorders(int nWidth, CRect rcBorders);
  530. void CenterColumn(int nFirstItem, int nLastItem, int nGroupHeight);
  531. private:
  532. int _CalcSpecialDynamicSize(CDC* pDC);
  533. int _WrapSpecialDynamicSize(int nWidth, BOOL bIncludeTail);
  534. int _GetSizeSpecialDynamicSize();
  535. BOOL _FindBestWrapSpecialDynamicSize();
  536. //}}AFX_CODEJOCK_PRIVATE
  537. protected:
  538. protected:
  539. BOOL m_bControlsCentering;                  // TRUE to center controls inside groups
  540. BOOL m_bControlsGrouping;                   // TRUE to group controls
  541. CString m_strCaption;                       // Caption of the group
  542. int m_nIndex;                               // Index of the group
  543. CXTPRibbonGroups* m_pGroups;                // Parent groups collection
  544. CRect m_rcGroup;                            // Bounding rectangle of the group
  545. CArray<CXTPControl*, CXTPControl*> m_arrControls;   // Collection of group's controls
  546. CXTPCommandBar* m_pParent;                  // Parent ribbon bar
  547. CXTPRibbonBar* m_pRibbonBar;                  // Parent ribbon bar
  548. int m_nId;                                  // Identifier of the group
  549. int m_nIconId;                              // Icon index of the group
  550. CXTPControl* m_pControlGroupOption;         // Group option control
  551. CXTPControlPopup* m_pControlGroupPopup;     // Group popup control
  552. BOOL m_bReduced;                            // TRUE if group was reduced
  553. BOOL m_bShowOptionButton;                   // TRUE to show option button
  554. BOOL m_bVisible;                            // TRUE if group is visible
  555. int m_nAllowReduce;
  556. int m_nRowCount;                            // Total rows number of items
  557. private:
  558. struct LAYOUTINFO;
  559. struct CONTROLINFO;
  560. LAYOUTINFO* m_pLayoutInfo;
  561. private:
  562. friend class CXTPRibbonGroups;
  563. friend class CXTPRibbonBar;
  564. friend class CControlGroupPopup;
  565. friend class CXTPRibbonGroupPopupToolBar;
  566. friend class CXTPRibbonGroupControlPopup;
  567. };
  568. //{{AFX_CODEJOCK_PRIVATE
  569. class CXTPRibbonGroupOption : public CXTPControlButton
  570. {
  571. DECLARE_XTP_CONTROL(CXTPRibbonGroupOption)
  572. void Draw(CDC* pDC);
  573. };
  574. class CXTPRibbonGroupControlPopup : public CXTPControlPopup
  575. {
  576. DECLARE_XTP_CONTROL(CXTPRibbonGroupControlPopup)
  577. public:
  578. CXTPRibbonGroupControlPopup(CXTPRibbonGroup* pGroup = 0);
  579. virtual CSize GetSize (CDC* pDC);
  580. void Draw(CDC* pDC);
  581. BOOL IsTransparent() const;
  582. CXTPRibbonBar* GetRibbonBar() const;
  583. virtual void Copy(CXTPControl* pControl, BOOL bRecursive  = FALSE);
  584. virtual void GenerateCommandBarList(DWORD& /*nID*/, CXTPCommandBarList* /*pCommandBarList*/, XTP_COMMANDBARS_PROPEXCHANGE_PARAM* /*pParam*/);
  585. virtual void OnLButtonUp(CPoint /*point*/);
  586. virtual BOOL IsVisible(DWORD dwSkipFlags = 0) const;
  587. virtual BOOL OnSetPopup(BOOL bPopup);
  588. protected:
  589. CXTPRibbonGroup* m_pPopupGroup;
  590. };
  591. //}}AFX_CODEJOCK_PRIVATE
  592. AFX_INLINE void CXTPRibbonGroup::SetCaption(LPCTSTR lpszCaption) {
  593. m_strCaption = lpszCaption;
  594. }
  595. AFX_INLINE CString CXTPRibbonGroup::GetCaption() const {
  596. return m_strCaption;
  597. }
  598. AFX_INLINE CRect CXTPRibbonGroup::GetRect() const {
  599. return m_rcGroup;
  600. }
  601. AFX_INLINE CXTPRibbonBar* CXTPRibbonGroup::GetRibbonBar() const {
  602. return (CXTPRibbonBar*)m_pRibbonBar;
  603. }
  604. AFX_INLINE int CXTPRibbonGroup::GetCount() const {
  605. return (int)m_arrControls.GetSize();
  606. }
  607. AFX_INLINE CXTPControl* CXTPRibbonGroup::GetAt(int nIndex) const {
  608. return nIndex >= 0 && nIndex < GetCount() ? m_arrControls.GetAt(nIndex) : NULL;
  609. }
  610. AFX_INLINE int CXTPRibbonGroup::GetID() const {
  611. return m_nId;
  612. }
  613. AFX_INLINE CXTPControl* CXTPRibbonGroup::GetControlGroupOption() const {
  614. return m_pControlGroupOption;
  615. }
  616. AFX_INLINE CXTPControlPopup* CXTPRibbonGroup::GetControlGroupPopup() const {
  617. return m_pControlGroupPopup;
  618. }
  619. AFX_INLINE BOOL CXTPRibbonGroup::IsReduced() const {
  620. return m_bReduced;
  621. }
  622. AFX_INLINE void CXTPRibbonGroup::SetIconId(int nId) {
  623. m_nIconId = nId;
  624. }
  625. AFX_INLINE int CXTPRibbonGroup::GetIconId() const {
  626. return m_nIconId <= 0 ? m_nId : m_nIconId;
  627. }
  628. AFX_INLINE void CXTPRibbonGroup::ShowOptionButton(BOOL bShowOptionButton) {
  629. m_bShowOptionButton = bShowOptionButton;
  630. }
  631. AFX_INLINE int CXTPRibbonGroup::GetIndex() const {
  632. return m_nIndex;
  633. }
  634. AFX_INLINE BOOL CXTPRibbonGroup::IsControlsGrouping() const {
  635. return m_bControlsGrouping;
  636. }
  637. AFX_INLINE void CXTPRibbonGroup::SetControlsGrouping(BOOL bControlsGrouping) {
  638. m_bControlsGrouping = bControlsGrouping;
  639. }
  640. AFX_INLINE void CXTPRibbonGroup::SetControlsCentering(BOOL bControlsCentering) {
  641. m_bControlsCentering = bControlsCentering;
  642. }
  643. AFX_INLINE void CXTPRibbonGroup::AllowReduce(int nAllowReduce) {
  644. m_nAllowReduce = nAllowReduce;
  645. }
  646. #endif // !defined(__XTPRIBBONGROUP_H__)