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

对话框与窗口

开发平台:

Visual C++

  1. // XTPCommandBars.h : interface for the CXTPCommandBars class.
  2. //
  3. // This file is a part of the XTREME COMMANDBARS 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(__XTPCOMMANDBARS_H__)
  22. #define __XTPCOMMANDBARS_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. #include "XTPCommandBarsDefines.h"
  28. #include "XTPControl.h"
  29. #include "XTPControls.h"
  30. #include "XTPToolBar.h"
  31. #include "XTPMenuBar.h"
  32. class CXTPDockBar;
  33. class CXTPToolBar;
  34. class CXTPControl;
  35. class CXTPPopupBar;
  36. class CXTPDockState;
  37. class CXTPCommandBar;
  38. class CXTPCustomizeDropSource;
  39. class CXTPCommandBars;
  40. class CXTPCommandBarList;
  41. class CXTPImageManager;
  42. class CXTPPaintManager;
  43. class CXTPControls;
  44. class CXTPMenuBar;
  45. class CXTPReBar;
  46. class CXTPToolTipContext;
  47. class CXTPShortcutManager;
  48. class CXTPKeyboardManager;
  49. class CXTPStatusBar;
  50. //===========================================================================
  51. // Summary:
  52. //     CXTPCommandBarKeyboardTip is CWnd derived class, represents Keyboard tip single window
  53. //===========================================================================
  54. class _XTP_EXT_CLASS CXTPCommandBarKeyboardTip : public CWnd
  55. {
  56. public:
  57. //-----------------------------------------------------------------------
  58. // Summary:
  59. //     Constructs a CXTPCommandBarKeyboardTip object
  60. // Parameters:
  61. //     pCommandBars - CXTPCommandBars parent object
  62. //     pOwner - Owner object
  63. //     lpszCaption - Caption of control
  64. //     pt - Client coordinates
  65. //     dwAlign - Align of tip
  66. //     bEnabled - TRUE if keyboard tip is enabled
  67. //-----------------------------------------------------------------------
  68. CXTPCommandBarKeyboardTip(CXTPCommandBars* pCommandBars, CCmdTarget* pOwner, LPCTSTR lpszCaption, CPoint pt, DWORD dwAlign, BOOL bEnabled);
  69. protected:
  70. //{{AFX_CODEJOCK_PRIVATE
  71. DECLARE_MESSAGE_MAP()
  72. afx_msg void OnPaint();
  73. afx_msg LRESULT OnNcHitTest(CPoint point);
  74. //}}AFX_CODEJOCK_PRIVATE
  75. public:
  76. CString m_strTip;           // Tooltip
  77. CString m_strCaption;       // Caption
  78. CString m_strPrefix;       // Caption
  79. CCmdTarget* m_pOwner;       // Owner object
  80. CPoint m_pt;                // Client coordinates
  81. BOOL m_bEnabled;            // Enabled flag
  82. BOOL m_bVisible;            // TRUE if visible
  83. CXTPCommandBars* m_pCommandBars;    // Parent CXTPCommandBars object
  84. DWORD m_dwAlign;            // Tip align
  85. BOOL m_bExplicit;
  86. };
  87. //===========================================================================
  88. // Summary:
  89. //     CXTPCommandBarsContextMenus is CXTPCommandBarList derived class,
  90. //     represents collection of context menus
  91. //===========================================================================
  92. class _XTP_EXT_CLASS CXTPCommandBarsContextMenus : public CXTPCommandBarList
  93. {
  94. public:
  95. //-----------------------------------------------------------------------
  96. // Summary:
  97. //     Constructs a CXTPCommandBarsContextMenus object
  98. // Parameters:
  99. //     pCommandBars - Parent CXTPCommandBars object
  100. //-----------------------------------------------------------------------
  101. CXTPCommandBarsContextMenus(CXTPCommandBars* pCommandBars);
  102. public:
  103. //-----------------------------------------------------------------------
  104. // Summary:
  105. //     Call this method to add new context menu to collection
  106. // Parameters:
  107. //     nIDBar - Menu resource identifier
  108. //     pCommandBar - CmmandBar to be added
  109. //     lpszTitle - Caption of context menu
  110. //     pSubMenu - Context menu to convert
  111. // Returns:
  112. //     Pointer to added context menu.
  113. //-----------------------------------------------------------------------
  114. CXTPCommandBar* Add(UINT nIDBar);
  115. CXTPCommandBar* Add(CXTPCommandBar* pCommandBar); // <combine CXTPCommandBarsContextMenus::Add@UINT>
  116. CXTPCommandBar* Add(UINT nIDBar, LPCTSTR lpszTitle, CMenu* pSubMenu); // <combine CXTPCommandBarsContextMenus::Add@UINT>
  117. //{{AFX_CODEJOCK_PRIVATE
  118. //}}AFX_CODEJOCK_PRIVATE
  119. };
  120. //-----------------------------------------------------------------------
  121. // Summary:
  122. //     XTP_COMMANDBARS_PROPEXCHANGE_PARAM is a
  123. //     structure used to store the CommandBar's save settings.  This is
  124. //     a set of State options that will be used to change how and what
  125. //     will be saved and loaded when loading and saving XML files.
  126. // Remarks:
  127. //     When saving your XML string to a file, be sure to use the .XML
  128. //     file extension.  If you open up your .XML file in your favorite
  129. //     web browser it will automatically format the XML string into the
  130. //     correct format.
  131. // See Also: CXTPCommandBars::DoPropExchange, CXTPPropExchangeXMLNode
  132. // Example:
  133. // <code>
  134. // XTP_COMMANDBARS_PROPEXCHANGE_PARAM param;
  135. // param.bSerializeControls = TRUE;
  136. // // Serialize to XML
  137. // CXTPPropExchangeXMLNode px(FALSE, 0, _T("Settings"));
  138. // CXTPPropExchangeSection pxCommandBars(px.GetSection(_T("CommandBars")));
  139. // GetCommandBars()->DoPropExchange(&pxCommandBars, &param);
  140. // px.SaveToFile(m_strIniFileName);
  141. // </code>
  142. //-----------------------------------------------------------------------
  143. struct XTP_COMMANDBARS_PROPEXCHANGE_PARAM
  144. {
  145. //{{AFX_CODEJOCK_PRIVATE
  146. //-------------------------------------------------------------------------
  147. // Summary:
  148. //     Creates a XTP_COMMANDBARS_PROPEXCHANGE_PARAM object which is a
  149. //     structure used to store the CommandBar's save settings.  This is
  150. //     a set of State options that will be used to change how and what
  151. //     will be saved and loaded when loading and saving XML files.
  152. //     The CXTPPropExchangeXMLNode class is used to create the XML file.
  153. // Remarks:
  154. //     When saving your XML string to a file, be sure to use the .XML
  155. //     file extension.  If you open up your .XML file in your favorite
  156. //     web browser it will automatically format the XML string into the
  157. //     correct format.
  158. // See Also: CXTPCommandBars::DoPropExchange, CXTPPropExchangeXMLNode
  159. //-------------------------------------------------------------------------
  160. XTP_COMMANDBARS_PROPEXCHANGE_PARAM()
  161. {
  162. pCommandBars = NULL;
  163. bSerializeControls = FALSE;
  164. bSaveOnlyCustomized = TRUE;
  165. bLoadSilent = FALSE;
  166. bSaveOriginalControls = TRUE;
  167. bSerializeLayout = TRUE;
  168. bSerializeOptions = FALSE;
  169. bSerializeImages = FALSE;
  170. bSerializeDesignerControls = FALSE;
  171. bSerializeActions = FALSE;
  172. }
  173. //}}AFX_CODEJOCK_PRIVATE
  174. BOOL bSerializeControls;            // If True, the controls in the CommandBars will be saved.  If False, no controls will be saved,
  175.                                     // regardless of the other settings.  The default is True
  176. BOOL bSaveOnlyCustomized ;          // If True, only CommandBars that have been customized will be saved.  The default is True
  177. BOOL bLoadSilent;                   // If True, no message boxes will be displayed when the CommandBar layout is loaded.
  178.                                     // i.e.  The message box that asks for conformation before the CommandBar layout is reset.
  179. BOOL bSaveOriginalControls;         // If True, the original state of the CommandBars is saved along with the customized state
  180.                                     // For example, if a button on a toolbar is moved, then both the original and modified states will be saved.
  181.                                     // The Default is True
  182. BOOL bSerializeImages;              // If True, the images stored in the ImageManager will be saved.  The default is False
  183. BOOL bSerializeOptions;             // If True, the setting on the Keyboard and Options pages of the Customize dialog will
  184.                                     // be saved.  This includes shortcut keys and CommandBar options like large icons and full menus.
  185.                                     // The default is False
  186. BOOL bSerializeLayout;              // If True, the layout of the CommandBars will be saved.  The Layout includes information such as bar position, location, and size.  The Default is True
  187. BOOL bSerializeDesignerControls;    // In the CommandBar Designer you can export a XCB file to a XML file and Load it in your project.
  188.                                     // If SerializeDesignerControls is True, then the DesignerControls property will be filled with
  189.                                     // Control items from the CommandBar Designer's controls pane.  This allows you to load the XML file instead
  190.                                     // of loading the XCB file using the LoadDesignerBars method.  NOTE: DesignerControls are the controls displayed in the customization dialog.
  191.                                     // The CXTPPropExchangeXMLNode class is used to create the XML file.
  192.                                     // The default is False
  193. BOOL bSerializeActions;             // TRUE to save/restore actions for commandbars
  194. CXTPCommandBars* pCommandBars;      // Pointer to the CommandBars object that the XTP_COMMANDBARS_PROPEXCHANGE_PARAM setting apply to.
  195. };
  196. //===========================================================================
  197. // Summary:
  198. //     Options of the command bars.
  199. // See Also:
  200. //     CXTPCommandBars::GetCommandBarsOptions
  201. // Example:
  202. //     <code>pCommandBars->GetCommandBarsOptions()->animationType = xtpAnimateFade;</code>
  203. //===========================================================================
  204. class _XTP_EXT_CLASS CXTPCommandBarsOptions : public CXTPCmdTarget
  205. {
  206. public:
  207. //-----------------------------------------------------------------------
  208. // Summary:
  209. //     Constructs an CXTPCommandBarsOptions object
  210. //-----------------------------------------------------------------------
  211. CXTPCommandBarsOptions();
  212. public:
  213. //-----------------------------------------------------------------------
  214. // Summary:
  215. //     Reads or writes options from or to an archive.
  216. // Parameters:
  217. //     ar - A CArchive object to serialize to or from.
  218. //-----------------------------------------------------------------------
  219. void Serialize(CArchive& ar);
  220. //-----------------------------------------------------------------------
  221. // Summary:
  222. //     Reads or writes options from or to an archive.
  223. // Parameters:
  224. //     pPX - A CXTPPropExchange object to serialize to or from.
  225. //     bUserOptionsOnly - TRUE to serialize user's options only.
  226. //-----------------------------------------------------------------------
  227. void DoPropExchange(CXTPPropExchange* pPX, BOOL bUserOptionsOnly = FALSE);
  228. //-----------------------------------------------------------------------
  229. // Summary:
  230. //     Call this method to enable/disble menu underlines.
  231. // Parameters:
  232. //     keyboardCues - determines if menu underlines is enabled.
  233. // Remarks:
  234. //     keyboardCues parameter can be one of the following:
  235. //        * xtpKeyboardCuesShowAlways - Show keyboard cues always
  236. //        * xtpKeyboardCuesShowNever - Show keyboard cues always
  237. //        * xtpKeyboardCuesShowWindowsDefault - System defined
  238. //-----------------------------------------------------------------------
  239. void ShowKeyboardCues(XTPKeyboardCuesShow keyboardCues);
  240. //-----------------------------------------------------------------------
  241. // Summary:
  242. //     Call this method to get menu underlines state
  243. // Returns:
  244. //     Returns one of the following:
  245. //        * xtpKeyboardCuesShowAlways - Show keyboard cues always
  246. //        * xtpKeyboardCuesShowNever - Show keyboard cues always
  247. //        * xtpKeyboardCuesShowWindowsDefault - System defined
  248. //-----------------------------------------------------------------------
  249. XTPKeyboardCuesShow GetShowKeyboardCues() const;
  250. public:
  251. BOOL bAlwaysShowFullMenus;                          // TRUE to show full menus always.
  252. BOOL bShowFullAfterDelay;                           // TRUE to show full menus after short delay.
  253. BOOL bToolBarScreenTips;                            // TRUE to show toolbar's tooltips
  254. BOOL bToolBarAccelTips;                             // TRUE to add accelerators to tooltips.
  255. BOOL bLargeIcons;                                   // TRUE to use large toolbars icons.
  256. BOOL bSyncFloatingBars;                             // TRUE to hide floating bars when site frame deactivated.
  257. BOOL bShowExpandButtonAlways;                       // TRUE to show expand buttons always.
  258. BOOL bDblClickFloat;                                // TRUE to make toolbar floating be double-clicking.
  259. BOOL bShowTextBelowIcons;                           // TRUE to show captions below icons.
  260. BOOL bAltDragCustomization;                         // Allows users to change a toolbar button's position by dragging it while holding down ALT.
  261. BOOL bAutoHideUnusedPopups;                         // TRUE to hide unused popup controls.  This is similar to how the Windows Start menu hides infrequently used popups.
  262. BOOL bDirtyState;                                   // TRUE if the user has done any type of customization to menus or toolbars. (I.e. Moving a toolbar or adding a new button).  After a load or save of the BarStae this is set to FALSE.
  263. BOOL bShowPopupBarToolTips;                         // TRUE to display ToolTips for controls in popup menus.
  264. XTPAnimationType animationType;                     // Animation type.
  265. BOOL bAutoUpdateShortcuts;                          // TRUE to update shortcuts from accelerator table
  266. DWORD keyboardCuesUse;                              // Keyboard cues using
  267. BOOL bFlyByStatus;                                  // Status bar displays information about the button
  268. CSize szIcons;                                      // Size of the normal icons.
  269. CSize szLargeIcons;                                 // Size of the large icons.
  270. CSize szPopupIcons;                                 // Size of icons displayed in popup menus.
  271. BOOL bUseAltNumPadKeys;                             // TRUE to allow activate menu with Alt + num pad key.
  272. BOOL bUseSystemSaveBitsStyle;                       // TRUE to use CS_SAVEBITS class style for popups and shadows
  273. BOOL bDisableCommandIfNoHandler;                    // TRUE to disable commands if no handler presented
  274. BOOL bWrapLargePopups;                              // Wrap controls for large popups instead scroll them.
  275. CMap<UINT, UINT, BOOL, BOOL> m_mapHiddenCommands;   // Hidden command array.
  276. CMap<UINT, UINT, BOOL, BOOL> m_mapUsedCommands;     // Used commands array.
  277. BOOL bShowKeyboardTips;                             // TRUE to use keyboard tips.
  278. private:
  279. CXTPCommandBars* m_pCommandBars;
  280. XTPKeyboardCuesShow keyboardCuesShow;
  281. friend class CXTPCommandBars;
  282. };
  283. //===========================================================================
  284. // Summary:
  285. //     CXTPCommandBars is standalone class. It allows developer manipulate
  286. //     toolbars and popupbars
  287. // See Also: CXTPCommandBar, CXTPToolBar, CXTPCommandBarsOptions
  288. //===========================================================================
  289. class _XTP_EXT_CLASS CXTPCommandBars : public CXTPCmdTarget
  290. {
  291. protected:
  292. //-----------------------------------------------------------------------
  293. // Summary:
  294. //     Constructs a CXTPCommandBars object
  295. //-----------------------------------------------------------------------
  296. CXTPCommandBars();
  297. //-----------------------------------------------------------------------
  298. // Summary:
  299. //     Destroys a CXTPCommandBars object, handles cleanup and deallocation
  300. //-----------------------------------------------------------------------
  301. virtual ~CXTPCommandBars();
  302. public:
  303. //-----------------------------------------------------------------------
  304. // Summary:
  305. //     Call this member to create menu bar.
  306. // Parameters:
  307. //     lpszName - Title of menu bar.
  308. //     nID - menu identifier to be loaded.
  309. // Returns:
  310. //     A CXTPMenuBar object if successful; otherwise NULL.
  311. // See Also: Add
  312. //-----------------------------------------------------------------------
  313. CXTPMenuBar* SetMenu(LPCTSTR lpszName, UINT nID);
  314. //-----------------------------------------------------------------------
  315. // Summary:
  316. //     Call this member to add a new toolbar.
  317. // Parameters:
  318. //     lpszName - Title of toolbar.
  319. //     barPosition - Position of toolbar to be created.
  320. //     pToolbarClass - Runtime class of toolbar to create
  321. // Remarks:
  322. //     CommandBars will create new toolbar with pToolbarClass runtime class if it specified,
  323. //     if not m_pToolBarClass will be used.<p/>
  324. //     Call SetToolBarClass to set default runtime class for toolbars.
  325. // Returns:
  326. //     A CXTPToolBar object if successful; otherwise NULL.
  327. // See Also: SetMenu, SetToolBarClass
  328. //-----------------------------------------------------------------------
  329. CXTPToolBar* Add(LPCTSTR lpszName, XTPBarPosition barPosition, CRuntimeClass* pToolbarClass = NULL);
  330. //-----------------------------------------------------------------------
  331. // Summary:
  332. //     Call this member to get the active menu bar.
  333. // Returns:
  334. //     A CXTPMenuBar pointer associated with the menu bar.
  335. //-----------------------------------------------------------------------
  336. virtual CXTPMenuBar* GetMenuBar() const;
  337. //-----------------------------------------------------------------------
  338. // Summary:
  339. //     Call this member to get the toolbar with the specified identifier.
  340. // Parameters:
  341. //     nID - An integer identifier.
  342. // Returns:
  343. //     The CXTPToolBar pointer
  344. //-----------------------------------------------------------------------
  345. CXTPToolBar* GetToolBar(UINT nID) const;
  346. //-----------------------------------------------------------------------
  347. // Summary:
  348. //     Call this member to get the site of the command bars.
  349. // Returns:
  350. //     A CFrameWnd pointer representing the site of the command bars.
  351. //-----------------------------------------------------------------------
  352. CWnd* GetSite() const;
  353. //-----------------------------------------------------------------------
  354. // Summary:
  355. //     Call this member to get the dock bar at the specified position.
  356. // Parameters:
  357. //     barPosition - Position of the dockbar.
  358. // Returns:
  359. //     A CXTPDockBar pointer.
  360. //-----------------------------------------------------------------------
  361. CXTPDockBar* GetDockBar(XTPBarPosition barPosition) const;
  362. //-----------------------------------------------------------------------
  363. // Summary:
  364. //     Call this member to redraw the command bars.
  365. //-----------------------------------------------------------------------
  366. void RedrawCommandBars();
  367. //-----------------------------------------------------------------------
  368. // Summary:
  369. //     Call this member to invalidate the command bars.
  370. //-----------------------------------------------------------------------
  371. void InvalidateCommandBars();
  372. //-----------------------------------------------------------------------
  373. // Summary:
  374. //     Call this member to recalculate site layout.
  375. // Parameters:
  376. //     bDelay - TRUE to delay dock site layout until remaining framework
  377. //              items have been initialized completely.
  378. //-----------------------------------------------------------------------
  379. virtual void RecalcFrameLayout(BOOL bDelay = FALSE);
  380. //-----------------------------------------------------------------------
  381. // Summary:
  382. //     Call this member to find the specified control.
  383. // Parameters:
  384. //     type - Type of the control to find.
  385. //     nId - Control's identifier.
  386. //     bVisible - Control is visible.
  387. //     bRecursive - To find in the nested command bars.
  388. // Returns:
  389. //     The CXTPControl object if successful; otherwise NULL.
  390. //-----------------------------------------------------------------------
  391. CXTPControl* FindControl(XTPControlType type, UINT nId, BOOL bVisible, BOOL bRecursive) const;
  392. // -----------------------------------------------------------------------------
  393. // Summary:
  394. //     Call this member to display a floating pop-up menu at the
  395. //     specified location.
  396. // Parameters:
  397. //     pMenu :         Menu to be popped up
  398. //     nFlags :        Reserved, currently not used
  399. //     xPos :             Specifies the horizontal position in screen coordinates
  400. //                     of the popup menu.
  401. //     yPos :             Specifies the vertical position in screen coordinates of
  402. //                     the top of the menu on the screen.
  403. //     pWnd :          Identifies the window that owns the popup menu. This
  404. //                     window receives all WM_COMMAND messages from the menu.
  405. //     rcExclude :     Reserved, currently not used.
  406. //     pWndOwner :     Points to a CWnd object
  407. //     pCommandBars :  Points to a CXTPCommandBars object.
  408. //     pPopupBar :     Points to a CXTPPopupBar object
  409. //     lptm :          Pointer to a TPMPARAMS structure that specifies an area of the screen the menu should not overlap. This parameter can be NULL.
  410. // Returns:
  411. //     TRUE if successful; otherwise returns FALSE
  412. // Example:
  413. //     <code>
  414. //         void CCustomThemesView::OnRButtonDown(UINT /*nFlags*/, CPoint point)
  415. // {
  416. //     ClientToScreen(&point);
  417. //
  418. //     CMenu menu;
  419. //     VERIFY(menu.LoadMenu(IDR_MAINFRAME));
  420. //
  421. //     // get a pointer to the application window.
  422. //     CXTPMDIFrameWnd* pMainWnd = DYNAMIC_DOWNCAST(
  423. //         CXTPMDIFrameWnd, AfxGetMainWnd());
  424. //
  425. //     if (!pMainWnd)
  426. //         return;
  427. //
  428. //     // get a pointer to the CXTPCommandBars object.
  429. //     CXTPCommandBars* pCommandBars = pMainWnd->GetCommandBars();
  430. //
  431. //     if (!pCommandBars)
  432. //         return;
  433. //
  434. //     // display context menu.
  435. //     CXTPCommandBars::TrackPopupMenu(&menu, TPM_RIGHTBUTTON,
  436. //         point.x, point.y, pMainWnd, 0, 0, pCommandBars);
  437. // }
  438. //     </code>
  439. // -----------------------------------------------------------------------------
  440. static BOOL AFX_CDECL TrackPopupMenu(CMenu* pMenu, UINT nFlags, int xPos, int yPos, CWnd* pWnd, LPCRECT rcExclude = NULL, CWnd* pWndOwner = NULL, CXTPCommandBars* pCommandBars = NULL);
  441. static BOOL AFX_CDECL TrackPopupMenu(CXTPPopupBar* pPopupBar, UINT nFlags, int xPos, int yPos, CWnd* pWnd, LPCRECT rcExclude = NULL, CWnd* pWndOwner = NULL); //<COMBINE CXTPCommandBars::TrackPopupMenu@CMenu*@UINT@int@int@CWnd*@LPCRECT@CWnd*@CXTPCommandBars*>
  442. BOOL TrackPopupMenu(UINT nBarID, UINT nFlags, int x, int y, LPCRECT rcExclude = NULL); //<COMBINE CXTPCommandBars::TrackPopupMenu@CMenu*@UINT@int@int@CWnd*@LPCRECT@CWnd*@CXTPCommandBars*>
  443. BOOL TrackPopupMenuEx(CMenu* pMenu, UINT nFlags, int xPos, int yPos, CWnd* pWndOwner = NULL, LPTPMPARAMS lptpm = NULL);//<COMBINE CXTPCommandBars::TrackPopupMenu@CMenu*@UINT@int@int@CWnd*@LPCRECT@CWnd*@CXTPCommandBars*>
  444. //-----------------------------------------------------------------------
  445. // Summary:
  446. //     Retrieves list of available context menus
  447. // Returns:
  448. //     Command Bars context menus.
  449. //-----------------------------------------------------------------------
  450. CXTPCommandBarsContextMenus* GetContextMenus() const;
  451. //-----------------------------------------------------------------------
  452. // Summary:
  453. //     Call this member to retrieve the options of the command bars.
  454. // Returns:
  455. //     Command Bars options.
  456. //-----------------------------------------------------------------------
  457. CXTPCommandBarsOptions* GetCommandBarsOptions() const;
  458. //-----------------------------------------------------------------------
  459. // Summary:
  460. //     Call this function to save the state information to the registry
  461. //     or .INI file.
  462. // Parameters:
  463. //     lpszProfileName  - Points to a null-terminated string that
  464. //                        specifies the name of a section in the
  465. //                        initialization file or a key in the Windows
  466. //                        registry where state information is stored.
  467. //     bOnlyCustomized  - TRUE to save only the state for customized
  468. //                        command bar items.
  469. // See Also: LoadBarState, DoPropExchange
  470. //-----------------------------------------------------------------------
  471. void SaveBarState(LPCTSTR lpszProfileName, BOOL bOnlyCustomized = TRUE);
  472. //-----------------------------------------------------------------------
  473. // Summary:
  474. //     Call this function to retrieve state information from the registry
  475. //     or .INI file.
  476. // Parameters:
  477. //     lpszProfileName - Points to a null-terminated string that
  478. //                       specifies the name of a section in the initialization
  479. //                       file or a key in the Windows registry where
  480. //                       state information is stored.
  481. //     bSilent         - TRUE to disable user notifications when command bars are restore to their original state.
  482. // See Also: SaveBarState, DoPropExchange
  483. //-----------------------------------------------------------------------
  484. void LoadBarState(LPCTSTR lpszProfileName, BOOL bSilent = FALSE);
  485. //-----------------------------------------------------------------------
  486. // Summary:
  487. //     Call this function to save the command bars options.
  488. // Parameters:
  489. //     lpszProfileName - Points to a null-terminated string that
  490. //                       specifies the name of a section in the initialization
  491. //                       file or a key in the Windows registry where
  492. //                       state information is stored.
  493. // See Also: LoadOptions, DoPropExchange
  494. //-----------------------------------------------------------------------
  495. void SaveOptions(LPCTSTR lpszProfileName);
  496. //-----------------------------------------------------------------------
  497. // Summary:
  498. //     Call this function to restore the options of the command bars.
  499. // Parameters:
  500. //     lpszProfileName - Points to a null-terminated string that
  501. //                       specifies the name of a section in the initialization
  502. //                       file or a key in the Windows registry where
  503. //                       state information is stored.
  504. // See Also: SaveOptions, DoPropExchange
  505. //-----------------------------------------------------------------------
  506. void LoadOptions(LPCTSTR lpszProfileName);
  507. //-----------------------------------------------------------------------
  508. // Summary:
  509. //     Call this function to either read or write command bars from
  510. //     or to an archive.
  511. // Parameters:
  512. //     ar                 - A CArchive object to serialize to or from.
  513. //     bSerializeControls - TRUE to store controls information.
  514. //     bOnlyCustomized    - TRUE to store each commandbar only if it was customized by user.
  515. //     bSilent            - TRUE to disable user notifications when command bars are restore to their original state.
  516. // See Also: DoPropExchange
  517. //-----------------------------------------------------------------------
  518. void SerializeBarState(CArchive& ar, BOOL bSerializeControls = FALSE, BOOL bOnlyCustomized = TRUE, BOOL bSilent = FALSE);
  519. //-----------------------------------------------------------------------
  520. // Summary:
  521. //     Call this function to get ShortcutManager class pointer
  522. // Returns:
  523. //     Pointer to current shortcut manager.
  524. // See Also: SetShortcutManager
  525. //-----------------------------------------------------------------------
  526. CXTPShortcutManager* GetShortcutManager() const;
  527. //-----------------------------------------------------------------------
  528. // Summary:
  529. //     Call this function to set custom shortcut manager class.
  530. // Parameters:
  531. //     pShortcutManager - New ShortcutManager to be set
  532. // See Also: GetShortcutManager
  533. //-----------------------------------------------------------------------
  534. void SetShortcutManager(CXTPShortcutManager* pShortcutManager);
  535. //-----------------------------------------------------------------------
  536. // Summary:
  537. //     Reads or writes this object from or to an storage.
  538. // Parameters:
  539. //     pPX - A CXTPPropExchange object to serialize to or from.
  540. //     pParam - Exchange options.
  541. // Example:
  542. // <code>
  543. // XTP_COMMANDBARS_PROPEXCHANGE_PARAM param;
  544. // param.bSerializeControls = TRUE;
  545. // // Serialize to XML
  546. // CXTPPropExchangeXMLNode px(FALSE, 0, _T("Settings"));
  547. // CXTPPropExchangeSection pxCommandBars(px.GetSection(_T("CommandBars")));
  548. // GetCommandBars()->DoPropExchange(&pxCommandBars, &param);
  549. // px.SaveToFile(m_strIniFileName);
  550. // </code>
  551. // See Also: CXTPPropExchange, XTP_COMMANDBARS_PROPEXCHANGE_PARAM
  552. //-----------------------------------------------------------------------
  553. void DoPropExchange(CXTPPropExchange* pPX, XTP_COMMANDBARS_PROPEXCHANGE_PARAM* pParam = NULL);
  554. //-----------------------------------------------------------------------
  555. // Summary:
  556. //     Call this member function to load designer command bars from
  557. //     an archive.
  558. // Parameters:
  559. //     ar - A CArchive object to serialize to or from.
  560. //     pPX - A CXTPPropExchange object to serialize to or from.
  561. //-----------------------------------------------------------------------
  562. void LoadDesignerBars(CArchive& ar);
  563. void LoadDesignerBars(CXTPPropExchange* pPX); // <combine CXTPCommandBars::LoadDesignerBars@CArchive&>
  564. //# Intelligent menus routines
  565. //-----------------------------------------------------------------------
  566. // Summary:
  567. //     This member function adds the specified commands to the list of
  568. //     menu items to hide until activated by clicking on the chevron.
  569. // Parameters:
  570. //     pCommands - An array of command IDs, of menu items, to hide.
  571. //     nCount    - Size of the array passed in.
  572. // Remarks:
  573. //     The command will not be displayed in popup menus until the user
  574. //     clicks on the "expand menu" chevron or after a short delay when
  575. //     bShowFullAfterDelay is TRUE.  Note:  bAlwaysShowFullMenus must set
  576. //     to FALSE to hide the hidden commands
  577. //-----------------------------------------------------------------------
  578. void HideCommands(const UINT* pCommands, int nCount);
  579. //-----------------------------------------------------------------------
  580. // Summary:
  581. //     This member function adds the specified command to the list of
  582. //     menu items to hide until activated by clicking on the chevron.
  583. // Parameters:
  584. //     nCommand - The command ID of a menu item to hide.
  585. //-----------------------------------------------------------------------
  586. void HideCommand(UINT nCommand);
  587. //-----------------------------------------------------------------------
  588. // Summary:
  589. //     Call this member function to retrieve if the command is hidden
  590. //     until activated by clicking on the chevron.  I.e. Infrequently
  591. //     used commands.
  592. // Parameters:
  593. //     nCommand - Command id to check.
  594. // Remarks:
  595. //     The command will not be displayed in popup menus until the user
  596. //     clicks on the "expand menu" chevron or after a short delay when
  597. //     bShowFullAfterDelay is TRUE.  Note:  bAlwaysShowFullMenus must set
  598. //     to FALSE to hide the hidden commands
  599. // Returns:
  600. //     TRUE if the command item is hidden; otherwise returns FALSE.
  601. //-----------------------------------------------------------------------
  602. virtual BOOL IsCommandHidden(UINT nCommand);
  603. //-----------------------------------------------------------------------
  604. // Summary:
  605. //     Call this member function to retrieve if the control is hidden and of type
  606. //     CXTPControlPopup when bAutoHideUnusedPopups is TRUE.
  607. // Parameters:
  608. //     pControl - Control pointer to check.
  609. // Remarks:
  610. //     If bAutoHideUnusedPopups is FALSE, then this member performs the same
  611. //     action as IsCommandHidden. Override this member to provide custom intelligent menu scheme.
  612. // Returns:
  613. //     TRUE if the control item is hidden; otherwise returns FALSE.
  614. //-----------------------------------------------------------------------
  615. virtual BOOL IsControlHidden(CXTPControl* pControl);
  616. //-----------------------------------------------------------------------
  617. // Summary:
  618. //     Call this member function to set the command activated by user.
  619. // Parameters:
  620. //     nCommand - Command id to set
  621. //-----------------------------------------------------------------------
  622. void SetCommandUsed(UINT nCommand);
  623. //-----------------------------------------------------------------------
  624. // Summary:
  625. //     Call this member function to restore the state of the hidden
  626. //     commands.
  627. //-----------------------------------------------------------------------
  628. void ResetUsageData();
  629. //-----------------------------------------------------------------------
  630. // Summary:
  631. //     Retrieves active MDI document template
  632. // Returns:
  633. //     Active document template identifier.
  634. //-----------------------------------------------------------------------
  635. virtual UINT GetActiveDocTemplate();
  636. //-----------------------------------------------------------------------
  637. // Summary:
  638. //     Call this member function to set the application's command bars into and out of print-preview mode.
  639. // Parameters:
  640. //     bPreview - Specifies whether or not to place the application in print-preview mode. Set to TRUE to place in print preview, FALSE to cancel preview mode.
  641. //-----------------------------------------------------------------------
  642. void OnSetPreviewMode (BOOL bPreview);
  643. //-------------------------------------------------------------------------
  644. // Summary:
  645. //     Sends WM_IDLEUPDATECMDUI message to all tool bars.
  646. //-------------------------------------------------------------------------
  647. void UpdateCommandBars() const;
  648. public:
  649. //-----------------------------------------------------------------------
  650. // Summary:
  651. //     Determines if right-to-left mode was set.
  652. // Returns:
  653. //     TRUE if text is displayed using right-to-left reading-order properties.
  654. //-----------------------------------------------------------------------
  655. BOOL IsLayoutRTL() const;
  656. //-----------------------------------------------------------------------
  657. // Summary:
  658. //     Call this member to set right-to-left mode.
  659. // Parameters:
  660. //     bRightToLeft - TRUE to set right-to-left reading-order properties.
  661. //-----------------------------------------------------------------------
  662. void SetLayoutRTL(BOOL bRightToLeft);
  663. public:
  664. //-----------------------------------------------------------------------
  665. // Summary:
  666. //     Call this method to process frame messages.
  667. //     CXTPFrameWndBase derived classes call this method automatically.
  668. // Parameters:
  669. //     pMsg - Points to an MSG object
  670. // Returns:
  671. //     TRUE if the message was handled; otherwise FALSE.
  672. //-----------------------------------------------------------------------
  673. BOOL PreTranslateFrameMessage(MSG* pMsg);
  674. //-----------------------------------------------------------------------
  675. // Summary:
  676. //     Call this method to process frame messages.
  677. //     CXTPFrameWndBase derived classes call this method automatically.
  678. // Parameters:
  679. //     message - Specifies the message to be sent.
  680. //     wParam  - Specifies additional message-dependent information.
  681. //     lParam  - Specifies additional message-dependent information.
  682. //     pResult - The return value of WindowProc. Depends on the message;
  683. //               may be NULL.
  684. // Returns:
  685. //     TRUE if the message was handled; otherwise FALSE.
  686. //-----------------------------------------------------------------------
  687. BOOL OnFrameWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
  688. //-----------------------------------------------------------------------
  689. // Summary:
  690. //     This method shows the context menu for toolbars.
  691. // Parameters:
  692. //     pToolBar - Points to a CXTPToolBar object
  693. //     point - Position of the menu to show.
  694. //-----------------------------------------------------------------------
  695. virtual void ContextMenu(CXTPToolBar* pToolBar, CPoint point);
  696. //-----------------------------------------------------------------------
  697. // Summary:
  698. //     This method creates a context menu for toolbars.
  699. // Returns:
  700. //     A CXTPPopupBar object containing list of toolbars.
  701. //-----------------------------------------------------------------------
  702. virtual CXTPPopupBar* GetToolbarsPopup();
  703. //-----------------------------------------------------------------------
  704. // Summary:
  705. //     Call this method to create an expand bar.
  706. // Parameters:
  707. //     pToolBar - Points to a CXTPToolBar object
  708. //     pExpandBar - Points to a CXTPCommandBar object
  709. //-----------------------------------------------------------------------
  710. virtual void GetHiddenControls(CXTPToolBar* pToolBar, CXTPCommandBar* pExpandBar);
  711. //-----------------------------------------------------------------------
  712. // Summary:
  713. //     Call this method to create customized controls.
  714. // Parameters:
  715. //     pToolBar   - Points to a CXTPToolBar object
  716. //     pExpandBar - Points to a CXTPCommandBar object
  717. //-----------------------------------------------------------------------
  718. virtual void GetAddOrRemovePopup(CXTPToolBar* pToolBar, CXTPCommandBar* pExpandBar);
  719. //-----------------------------------------------------------------------
  720. // Summary:
  721. //     This method is called to set the site window.
  722. // Parameters:
  723. //     pFrame - Points to a CWnd object
  724. //-----------------------------------------------------------------------
  725. void SetSite(CWnd* pFrame);
  726. //-----------------------------------------------------------------------
  727. // Summary:
  728. //     Call this member to retrieve dock bar in specified point.
  729. // Parameters:
  730. //     pt - Point needed to test.
  731. //     pMainDock - CXTPDockBar class currently docked in.
  732. // Returns:
  733. //     A pointer to a CXTPDockBar object.
  734. //-----------------------------------------------------------------------
  735. CXTPDockBar* CanDock(CPoint pt, CXTPDockBar* pMainDock = NULL) const;
  736. //-----------------------------------------------------------------------
  737. // Summary:
  738. //     This member creates command bars.
  739. // Returns:
  740. //     A pointer to a CXTPCommandBars object
  741. //-----------------------------------------------------------------------
  742. static CXTPCommandBars* AFX_CDECL CreateCommandBars();
  743. //-----------------------------------------------------------------------
  744. // Summary:
  745. //     This member is called to create dock bars.
  746. //-----------------------------------------------------------------------
  747. void EnableDocking();
  748. //-----------------------------------------------------------------------
  749. // Summary:
  750. //     Call this member to get toolbars count.
  751. // Returns:
  752. //     Number of the toolbars.
  753. //-----------------------------------------------------------------------
  754. int GetCount() const;
  755. //-----------------------------------------------------------------------
  756. // Summary:
  757. //     Call this member to retrieve a toolbar with the specified index.
  758. // Parameters:
  759. //     nIndex - Index of the toolbar.
  760. // Returns:
  761. //     A pointer to a CXTPToolBar object
  762. //-----------------------------------------------------------------------
  763. CXTPToolBar* GetAt(int nIndex) const;
  764. //-----------------------------------------------------------------------
  765. // Summary:
  766. //     This method is called to activate toolbar.
  767. // Parameters:
  768. //     pCommandBar - Toolbar to activate
  769. //     bNext - TRUE to set foucs to the next toolbar.
  770. // Returns:
  771. //     TRUE if successful; otherwise returns FALSE
  772. //-----------------------------------------------------------------------
  773. BOOL SetToolBarFocus(CXTPToolBar* pCommandBar, BOOL bNext = FALSE);
  774. //-----------------------------------------------------------------------
  775. // Summary:
  776. //     Call this member to retrieve the  customize mode of the command
  777. //     bars.
  778. // Returns:
  779. //     TRUE if command bars in customize mode; otherwise returns FALSE
  780. //-----------------------------------------------------------------------
  781. BOOL IsCustomizeMode() const { return m_bCustomizeMode;}
  782. //-----------------------------------------------------------------------
  783. // Summary:
  784. //     Call this member to set customize mode of the command bars.
  785. // Parameters:
  786. //     bMode - TRUE to set customize mode.
  787. //-----------------------------------------------------------------------
  788. void SetCustomizeMode(BOOL bMode);
  789. //-----------------------------------------------------------------------
  790. // Summary:
  791. //     Call this member to retrieve the  customize mode of the command
  792. //     bars.
  793. // Returns:
  794. //     TRUE if command bars in customize mode; otherwise returns FALSE
  795. // See Also: SetQuickCustomizeMode
  796. //-----------------------------------------------------------------------
  797. BOOL IsQuickCustomizeMode() const { return m_bQuickCustomizeMode;}
  798. //-----------------------------------------------------------------------
  799. // Summary:
  800. //     Call this member to set customize mode of the command bars.
  801. // Parameters:
  802. //     bMode - TRUE to set customize mode.
  803. // See Also: IsQuickCustomizeMode
  804. //-----------------------------------------------------------------------
  805. void SetQuickCustomizeMode(BOOL bMode);
  806. //-----------------------------------------------------------------------
  807. // Summary:
  808. //     Call this member to retrieve the CXTPCustomizeDropSource helper
  809. //     class for customization.
  810. // Returns:
  811. //     A pointer to a CXTPCustomizeDropSource object
  812. //-----------------------------------------------------------------------
  813. CXTPCustomizeDropSource* GetDropSource() const;
  814. //-----------------------------------------------------------------------
  815. // Summary:
  816. //     This method is called when customized control changed.
  817. // Parameters:
  818. //     pControl - Points to a CXTPControl object
  819. //-----------------------------------------------------------------------
  820. void SetDragControl(CXTPControl* pControl);
  821. //-----------------------------------------------------------------------
  822. // Summary:
  823. //     Call this member to retrieve the current customized control.
  824. // Returns:
  825. //     A pointer to a CXTPControl object
  826. //-----------------------------------------------------------------------
  827. CXTPControl* GetDragControl() const;
  828. //-----------------------------------------------------------------------
  829. // Summary:
  830. //     Call this member to retrieve if the customize is avail.
  831. // Returns:
  832. //     TRUE if customize avail; otherwise returns FALSE
  833. //-----------------------------------------------------------------------
  834. BOOL IsCustomizeAvail() const;
  835. //-----------------------------------------------------------------------
  836. // Summary:
  837. //     Call this member to disabled/enable customization.
  838. // Parameters:
  839. //     bCustomizeAvail - TRUE to allow customization; FALSE to disable.
  840. //-----------------------------------------------------------------------
  841. void EnableCustomization(BOOL bCustomizeAvail);
  842. //-----------------------------------------------------------------------
  843. // Summary:
  844. //     Call this member to remove the toolbar.
  845. // Parameters:
  846. //     pToolBar - Points to a CXTPToolBar object to remove.
  847. //-----------------------------------------------------------------------
  848. void Remove(CXTPToolBar* pToolBar);
  849. //-----------------------------------------------------------------------
  850. // Summary:
  851. //     Call this member to remove all toolbars.
  852. //-----------------------------------------------------------------------
  853. void RemoveAll();
  854. // -----------------------------------------------------------------
  855. // Summary:
  856. //     Call this member to dock a toolbar to the specified dockbar.
  857. // Parameters:
  858. //     pBar        - Points to a CXTPToolBar object
  859. //     lpRect      - Position to dock.
  860. //     pDockBar    - Dock bar needed to be docked.
  861. //     barPosition - Position to dock
  862. // Returns:
  863. //     TRUE if the toolbar was successfully docked, FALSE if the bar
  864. //     could not be docked.
  865. // -----------------------------------------------------------------
  866. BOOL DockCommandBar(CXTPToolBar* pBar, LPRECT lpRect, CXTPDockBar* pDockBar);
  867. BOOL DockCommandBar(CXTPToolBar* pBar, XTPBarPosition barPosition); // <combine CXTPCommandBars::DockCommandBar@CXTPToolBar*@LPRECT@CXTPDockBar*>
  868. //-----------------------------------------------------------------------
  869. // Summary:
  870. //     Call this member to set the specified paint manager.
  871. // Parameters:
  872. //     pPaintManager - Points to a CXTPPaintManager object
  873. //-----------------------------------------------------------------------
  874. void SetPaintManager(CXTPPaintManager* pPaintManager);
  875. //-----------------------------------------------------------------------
  876. // Summary:
  877. //     Call this member to set the specified paint manager.
  878. // Parameters:
  879. //     paintTheme - Visual theme to be set
  880. //-----------------------------------------------------------------------
  881. void SetTheme(XTPPaintTheme paintTheme);
  882. //-----------------------------------------------------------------------
  883. // Summary:
  884. //     Call this member to set the specified image manager.
  885. // Parameters:
  886. //     pImageManager - Points to a CXTPPaintManager object
  887. //-----------------------------------------------------------------------
  888. void SetImageManager(CXTPImageManager* pImageManager);
  889. //-----------------------------------------------------------------------
  890. // Summary:
  891. //     Call this member to retrieve the paint manager of the command
  892. //     bars.
  893. // Returns:
  894. //     A pointer to a CXTPPaintManager object
  895. //-----------------------------------------------------------------------
  896. CXTPPaintManager* GetPaintManager() const;
  897. //-----------------------------------------------------------------------
  898. // Summary:
  899. //     Call this member to retrieve the image manager of the command
  900. //     bars.
  901. // Returns:
  902. //     A pointer to a CXTPImageManager object
  903. //-----------------------------------------------------------------------
  904. CXTPImageManager* GetImageManager() const;
  905. //-----------------------------------------------------------------------
  906. // Summary:
  907. //     Call this member to show/hide the toolbar.
  908. // Parameters:
  909. //     nIndex - Index of the toolbar to show or hide.
  910. //-----------------------------------------------------------------------
  911. void ToggleVisible(int nIndex);
  912. //-----------------------------------------------------------------------
  913. // Summary:
  914. //     Call this method to set customization file path
  915. // Parameters:
  916. //     lpszFile - Path to customization file information
  917. // Remarks:
  918. //     CommandBars can't store to registry customization information greater than 16kb, so it
  919. //     creates file with user customization information.
  920. //     If file not specified current directory will be used to save customization.
  921. // Example:
  922. // <code>
  923. // if (GetAppDataFolder(strAppDataFolder))
  924. // {
  925. //     CreateDirectory(strAppDataFolder + _T("\") + AfxGetApp()->m_pszAppName, NULL);
  926. //
  927. //      // Set customization path as "\Documents and Settings\user\Application Data\CustomThemes\CommandBars"
  928. //      GetCommandBars()->SetCustomizationDataFileName(strAppDataFolder + _T("\") + AfxGetApp()->m_pszAppName + _T("\") + lpszProfileName);
  929. // }
  930. // </code>
  931. //-----------------------------------------------------------------------
  932. void SetCustomizationDataFileName(LPCTSTR lpszFile);
  933. //-----------------------------------------------------------------------
  934. // Summary:
  935. //     This method finds rebar of the frame
  936. // Returns:
  937. //     CXTPReBar pointer if rebar was found; NULL otherwise.
  938. //-----------------------------------------------------------------------
  939. CXTPReBar* GetFrameReBar() const;
  940. //-----------------------------------------------------------------------
  941. // Summary:
  942. //     Call this method to set default toolbar class
  943. // Parameters:
  944. //     pToolBarClass - Runtime class of toolbars will be added.
  945. // Example:
  946. // <code>
  947. // class CSystemToolBar : public CXTPToolBar
  948. // {
  949. //     DECALRE_DYNCREATE(CSystemToolBar)
  950. //
  951. //     ....
  952. //
  953. // }
  954. //
  955. // pCommandBars->SetToolBarClass(RUNTIME_CLASS(CSystemToolBar));
  956. //
  957. // CXTPToolBar* pToolBar = pCommandBars->Add("New ToolBar", xtpBarTop);
  958. // ASSERT_KINDOF(CSystemToolBar, pToolBar);
  959. // </code>
  960. // See Also: SetMenuBarClass, SetPopupBarClass
  961. //-----------------------------------------------------------------------
  962. static void AFX_CDECL SetToolBarClass(CRuntimeClass* pToolBarClass);
  963. //-----------------------------------------------------------------------
  964. // Summary:
  965. //     Call this method to set default dockbar class
  966. // Parameters:
  967. //     pDockBarClass - Runtime class of dockbar will be added.
  968. //-----------------------------------------------------------------------
  969. static void AFX_CDECL SetDockBarClass(CRuntimeClass* pDockBarClass);
  970. //-----------------------------------------------------------------------
  971. // Summary:
  972. //     Call this method to set default menubar class
  973. // Parameters:
  974. //     pMenuBarClass - Runtime class of menu will be added.
  975. //-----------------------------------------------------------------------
  976. static void AFX_CDECL SetMenuBarClass(CRuntimeClass* pMenuBarClass);
  977. //-----------------------------------------------------------------------
  978. // Summary:
  979. //     Call this method to set default popupbar class
  980. // Parameters:
  981. //     pPopupBarClass - Runtime class of popups will be added.
  982. //-----------------------------------------------------------------------
  983. static void AFX_CDECL SetPopupBarClass(CRuntimeClass* pPopupBarClass);
  984. //-----------------------------------------------------------------------
  985. // Summary:
  986. //     Call this method to set default popup toolbar class
  987. // Parameters:
  988. //     pPopupToolBarClass - Runtime class of popups will be added.
  989. //-----------------------------------------------------------------------
  990. static void AFX_CDECL SetPopupToolBarClass(CRuntimeClass* pPopupToolBarClass);
  991. //-----------------------------------------------------------------------
  992. // Summary:
  993. //     Call this method to get tooltip context pointer.
  994. //-----------------------------------------------------------------------
  995. CXTPToolTipContext* GetToolTipContext() const;
  996. //-----------------------------------------------------------------------
  997. // Summary:
  998. //     Call this member to find index of the specified toolbar
  999. // Parameters:
  1000. //     pToolBar - Pointer to a CXTPToolBar object.
  1001. // Returns:
  1002. //     The index of the matching item.
  1003. //-----------------------------------------------------------------------
  1004. int FindIndex(CXTPToolBar* pToolBar) const;
  1005. //-----------------------------------------------------------------------
  1006. // Summary:
  1007. //     Call this member to close all popup windows
  1008. //-----------------------------------------------------------------------
  1009. void ClosePopups() const;
  1010. CXTPStatusBar* GetStatusBar() const;
  1011. protected:
  1012. //-----------------------------------------------------------------------
  1013. // Summary:
  1014. //     Call this member function to float a CXTPToolBar.
  1015. // Parameters:
  1016. //     pBar - Pointer to a valid CXTPToolBar object.
  1017. // Returns:
  1018. //     TRUE if the CXTPToolBar was successfully floated, otherwise FALSE.
  1019. //-----------------------------------------------------------------------
  1020. BOOL FloatCommandBar(CXTPToolBar* pBar);
  1021. //-----------------------------------------------------------------------
  1022. // Summary:
  1023. //     Call this member function to store state information about the
  1024. //     frame window's control bars in a CXTPDockState object.
  1025. // Parameters:
  1026. //     state - Contains the current state of the frame window's control
  1027. //             bars upon return.
  1028. //-----------------------------------------------------------------------
  1029. void GetDockState(CXTPDockState& state);
  1030. //-----------------------------------------------------------------------
  1031. // Summary:
  1032. //     Call this member function to apply state information stored in a
  1033. //     CXTPDockState object to the frame window's control bars.
  1034. // Parameters:
  1035. //     state - Apply the stored state to the frame window's control bars.
  1036. //-----------------------------------------------------------------------
  1037. void SetDockState(CXTPDockState& state);
  1038. //-----------------------------------------------------------------------
  1039. // Summary:
  1040. //     This method is called when new toolbar was added.
  1041. // Parameters:
  1042. //     pToolBar - Pointer to new toolbar.
  1043. //-----------------------------------------------------------------------
  1044. virtual void OnToolBarAdded(CXTPToolBar* pToolBar);
  1045. //-----------------------------------------------------------------------
  1046. // Summary:
  1047. //     This method is called when new toolbar was removed
  1048. // Parameters:
  1049. //     pToolBar - Pointer to toolbar was removed.
  1050. //-----------------------------------------------------------------------
  1051. virtual void OnToolBarRemoved(CXTPToolBar* pToolBar);
  1052. //-----------------------------------------------------------------------
  1053. // Summary:
  1054. //     This method is called when tracking mode of commandbar was changed
  1055. // Parameters:
  1056. //     pCommandBar - Pointer to commandbar who's mode has changed
  1057. //     bMode - new mode the commandbar changed to.
  1058. //-----------------------------------------------------------------------
  1059. virtual void OnTrackingModeChanged(CXTPCommandBar* pCommandBar, int bMode);
  1060. //-----------------------------------------------------------------------
  1061. // Summary:
  1062. //     This method is called to add custom toolbar.
  1063. // Parameters:
  1064. //     lpcstrCaption - Title of toolbar.
  1065. //     nID - Toolbar id
  1066. //     bTearOffBar - TRUE if toolbar is tear-off
  1067. // Returns:
  1068. //     A CXTPToolBar object if successful; otherwise NULL.
  1069. // See Also: Add
  1070. //-----------------------------------------------------------------------
  1071. virtual CXTPToolBar* AddCustomBar(LPCTSTR lpcstrCaption, UINT nID, BOOL bTearOffBar = FALSE);
  1072. public:
  1073. //-----------------------------------------------------------------------
  1074. // Summary:
  1075. //     Call this method to get CXTPMouseManager pointer of command bars
  1076. // Returns:
  1077. //     Pointer to CXTPMouseManager object
  1078. // See Also: GetKeyboardManager
  1079. //-----------------------------------------------------------------------
  1080. CXTPMouseManager* GetMouseManager() const;
  1081. //-----------------------------------------------------------------------
  1082. // Summary:
  1083. //     Call this method to get GetKeyboardManager pointer of command bars
  1084. // Returns:
  1085. //     Pointer to GetKeyboardManager object
  1086. // See Also: CXTPMouseManager
  1087. //-----------------------------------------------------------------------
  1088. CXTPKeyboardManager* GetKeyboardManager() const;
  1089. //-----------------------------------------------------------------------
  1090. // Summary:
  1091. //     This method is called when user press Alt + char
  1092. // Parameters:
  1093. //     chAccel - Character was pressed
  1094. // Returns:
  1095. //     TRUE if command bars processed this character
  1096. //-----------------------------------------------------------------------
  1097. BOOL OnFrameAccel(UINT chAccel);
  1098. //-----------------------------------------------------------------------
  1099. // Summary:
  1100. //     Determines Help identifier of control under mouse cursor
  1101. // Returns:
  1102. //     Identifier of control under mouse cursor
  1103. // See Also: CXTPControl::SetHelpId
  1104. //-----------------------------------------------------------------------
  1105. int GetHelpTrackingId() const;
  1106. //-----------------------------------------------------------------------
  1107. // Summary:
  1108. //     This method is called to show keyboard cues of controls
  1109. // Parameters:
  1110. //     bShow - TRUE to show keyboard cues
  1111. //-----------------------------------------------------------------------
  1112. void ShowKeyboardCues(BOOL bShow);
  1113. //-----------------------------------------------------------------------
  1114. // Summary:
  1115. //     Call this method to get actions list for command bars
  1116. //-----------------------------------------------------------------------
  1117. CXTPControlActions* GetActions() const;
  1118. //-----------------------------------------------------------------------
  1119. // Summary:
  1120. //     Call this method to let command bars automatically add actions for new commands
  1121. //-----------------------------------------------------------------------
  1122. void EnableActions();
  1123. //-----------------------------------------------------------------------
  1124. // Summary:
  1125. //     Determines if EnableActions method was called
  1126. //-----------------------------------------------------------------------
  1127. BOOL IsActionsEnabled() const;
  1128. //-----------------------------------------------------------------------
  1129. // Summary:
  1130. //     Call this method to add new action for specified id.
  1131. // Parameters:
  1132. //     nId - Identifier of action to create
  1133. //-----------------------------------------------------------------------
  1134. CXTPControlAction* CreateAction(int nId);
  1135. //-----------------------------------------------------------------------
  1136. // Summary:
  1137. //     Call this method to find action for specified id.
  1138. // Parameters:
  1139. //     nId - Identifier of action to find
  1140. //-----------------------------------------------------------------------
  1141. CXTPControlAction* FindAction(int nId) const;
  1142. protected:
  1143. //{{AFX_CODEJOCK_PRIVATE
  1144. // Implementation of Command Bars
  1145. virtual BOOL SaveCommandBarList(CXTPPropExchange* pPX, CXTPCommandBarList* pCommandBarList);
  1146. virtual BOOL LoadCommandBarList(CXTPPropExchange* pPX, CXTPCommandBarList* pCommandBarList);
  1147. virtual void GenerateCommandBarList(CXTPCommandBarList* pCommandBarList, XTP_COMMANDBARS_PROPEXCHANGE_PARAM* pParam);
  1148. virtual void RestoreCommandBarList(CXTPCommandBarList* pCommandBarList, BOOL bSilent = FALSE);
  1149. void SerializeCommandBars(CArchive& ar);
  1150. void SaveDockBarsState(LPCTSTR lpszProfileName);
  1151. void LoadDockBarsState(LPCTSTR lpszProfileName);
  1152. void SerializeDockBarsState(CXTPPropExchange* pPX);
  1153. void _GetAddOrRemovePopup(CXTPToolBar* pToolBar, CXTPCommandBar* pExpandBar);
  1154. void _LoadControlsPart(CFile& file, XTP_COMMANDBARS_PROPEXCHANGE_PARAM* pParam);
  1155. BOOL GetControlsFileName(CString& strFileName, LPCTSTR lpszProfileName);
  1156. CDocTemplate* FindDocTemplate(CMDIChildWnd* pChild);
  1157. void DelayRedrawCommandBars();
  1158. int GetNextVisible(long nIndex, int nDirection) const;
  1159. CXTPControl* FindAccel(CXTPCommandBar* pCommandBar, UINT chAccel, BOOL& bSelectOnly) const;
  1160. CXTPControl* _GetNextControl(CXTPControls*& pControls, int nIndex) const;
  1161. void IdleRecalcLayout();
  1162. void SetLayoutRTL(CWnd* pWnd, BOOL bRTLLayout);
  1163. CString GetIsolatedFileName(const CString& strPrifileName);
  1164. //}}AFX_CODEJOCK_PRIVATE
  1165. public:
  1166. CXTPControls* m_pDesignerControls;      // Designer controls if used.
  1167. BOOL m_bIgnoreShiftMenuKey;             // if set menus will ignore Shift+Alt key combinations
  1168. BOOL m_bDesignerMode;                   // TRUE if command bars in designer mode.
  1169. //===========================================================================
  1170. // Summary:
  1171. //     Keyboard tips information
  1172. //===========================================================================
  1173. struct KEYBOARDTIPS
  1174. {
  1175. CArray<CXTPCommandBarKeyboardTip*, CXTPCommandBarKeyboardTip*> arr;     //Keyboard tips collection
  1176. CXTPCommandBar* pBar;           // Owner of keyboard tips
  1177. int nLevel;         // Keyboard tip level (for RibbonBar)
  1178. int nKey;           // Keys was pressed already.
  1179. } m_keyboardTips;
  1180. //-----------------------------------------------------------------------
  1181. // Summary:
  1182. //     This method is called to show keyboard tips for the commandbar
  1183. // Parameters:
  1184. //     pCommandBar - Owner of keyboard tips
  1185. //     nLevel - Keyboard tip level (for RibbonBar)
  1186. // See Also: HideKeyboardTips
  1187. //-----------------------------------------------------------------------
  1188. void ShowKeyboardTips(CXTPCommandBar* pCommandBar, int nLevel = 1);
  1189. //-------------------------------------------------------------------------
  1190. // Summary:
  1191. //     Removes all keyboard tips
  1192. // See Also: ShowKeyboardTips
  1193. //-------------------------------------------------------------------------
  1194. void HideKeyboardTips();
  1195. protected:
  1196. CXTPCustomizeDropSource* m_pDropSource; // Customize helper class.
  1197. CXTPPaintManager* m_pPaintManager;      // Paint manager.
  1198. CXTPImageManager* m_pImageManager;      // Image manager
  1199. CXTPControl* m_pDragSelected;           // Customize control.
  1200. BOOL m_bCustomizeMode;                  // Customize mode.
  1201. BOOL m_bCustomizeAvail;                 // TRUE if customize available.
  1202. int  m_nDefaultMenuID;                  // Default menu resource.
  1203. BOOL m_bEnableActions;                  // True if actions was enabled
  1204. BOOL m_bQuickCustomizeMode;             // TRUE if command bars in quick customization mode
  1205. CString m_strControlsFileName;          // File name to be used to store user customization.
  1206. CXTPCommandBarsOptions* m_pOptions;     // Command bars' options
  1207. CXTPCommandBarsContextMenus* m_pContextMenus;    // Context menu collection
  1208. CArray <CXTPToolBar*, CXTPToolBar*> m_arrBars;   // Toolbars list.
  1209. CXTPDockBar* m_pDocks[4];               // DockBars list
  1210. CWnd* m_pFrame;                         // Parent frame of command bars
  1211. CXTPToolTipContext* m_pToolTipContext;  // Tooltip Context.
  1212. mutable CXTPMouseManager* m_pMouseManager;      // Mouse manager of command bars
  1213. mutable CXTPKeyboardManager* m_pKeyboardManager; // Keyboard manager of command bars
  1214. static CRuntimeClass* m_pToolBarClass;  // Default toolbar class
  1215. static CRuntimeClass* m_pMenuBarClass;  // Default menubar class
  1216. static CRuntimeClass* m_pPopupBarClass; // Default popupbar class
  1217. static CRuntimeClass* m_pPopupToolBarClass; // Default popupbar class
  1218. static CRuntimeClass* m_pDockBarClass;  // Default dockbar class
  1219. BOOL m_bKeyboardCuesVisible;            // TRUE if menu underlines is currently visible
  1220. CXTPShortcutManager* m_pShortcutManager; // Shortcut Manager of command bars.
  1221. int m_nIDHelpTracking;                  // Selected control.
  1222. CXTPControlActions* m_pActions;         // Actions collection
  1223. private:
  1224. BOOL m_bRecalcLayout;
  1225. BOOL m_bUseKeyboardCues;
  1226. BOOL m_bRightToLeft;
  1227. private:
  1228. DECLARE_DYNCREATE(CXTPCommandBars)
  1229. friend class CXTPCommandBar;
  1230. friend class CXTPToolBar;
  1231. friend class CXTPDockContext;
  1232. friend class CXTPDockState;
  1233. friend class CXTPControlToolbars;
  1234. friend class CXTPControl;
  1235. friend class CCommandBarsCtrl;
  1236. friend class CXTPCustomizeToolbarsPage;
  1237. friend class CXTPPopupBar;
  1238. friend class CXTPPopupToolBar;
  1239. friend class CXTPMenuBar;
  1240. friend class CXTPCommandBarsOptions;
  1241. friend class CCommandBarsSite;
  1242. friend class CXTPDialog;
  1243. friend class CXTPRibbonBar;
  1244. };
  1245. //////////////////////////////////////////////////////////////////////////
  1246. AFX_INLINE CWnd* CXTPCommandBars::GetSite() const {
  1247. return m_pFrame;
  1248. }
  1249. AFX_INLINE CXTPDockBar* CXTPCommandBars::GetDockBar(XTPBarPosition barPosition) const {
  1250. ASSERT(barPosition >= 0 && barPosition < 4);
  1251. return barPosition >= 0 && barPosition < 4 ? m_pDocks[barPosition] : NULL;
  1252. }
  1253. AFX_INLINE int CXTPCommandBars::GetCount() const {
  1254. return (int)m_arrBars.GetSize();
  1255. }
  1256. AFX_INLINE CXTPCustomizeDropSource* CXTPCommandBars::GetDropSource() const {
  1257. return m_pDropSource;
  1258. }
  1259. AFX_INLINE CXTPControl* CXTPCommandBars::GetDragControl() const {
  1260. return  m_pDragSelected;
  1261. }
  1262. AFX_INLINE BOOL CXTPCommandBars::IsCustomizeAvail() const {
  1263. return m_bCustomizeAvail;
  1264. }
  1265. AFX_INLINE void CXTPCommandBars::EnableCustomization(BOOL bCustomizeAvail) {
  1266. m_bCustomizeAvail = bCustomizeAvail;
  1267. }
  1268. AFX_INLINE CXTPCommandBarsOptions* CXTPCommandBars::GetCommandBarsOptions() const {
  1269. return m_pOptions;
  1270. }
  1271. AFX_INLINE void CXTPCommandBars::SetCustomizationDataFileName(LPCTSTR lpszFile) {
  1272. m_strControlsFileName = lpszFile;
  1273. }
  1274. AFX_INLINE void CXTPCommandBars::SetToolBarClass(CRuntimeClass* pToolBarClass) {
  1275. m_pToolBarClass = pToolBarClass;
  1276. }
  1277. AFX_INLINE void CXTPCommandBars::SetMenuBarClass(CRuntimeClass* pMenuBarClass) {
  1278. m_pMenuBarClass = pMenuBarClass;
  1279. }
  1280. AFX_INLINE void CXTPCommandBars::SetDockBarClass(CRuntimeClass* pDockBarClass) {
  1281. m_pDockBarClass = pDockBarClass;
  1282. }
  1283. AFX_INLINE void CXTPCommandBars::SetPopupBarClass(CRuntimeClass* pPopupBarClass) {
  1284. m_pPopupBarClass = pPopupBarClass;
  1285. }
  1286. AFX_INLINE void CXTPCommandBars::SetPopupToolBarClass(CRuntimeClass* pPopupToolBarClass) {
  1287. m_pPopupToolBarClass = pPopupToolBarClass;
  1288. }
  1289. AFX_INLINE int CXTPCommandBars::GetHelpTrackingId() const {
  1290. return m_nIDHelpTracking;
  1291. }
  1292. AFX_INLINE CXTPControlActions* CXTPCommandBars::GetActions() const {
  1293. return m_pActions;
  1294. }
  1295. AFX_INLINE BOOL CXTPCommandBars::IsActionsEnabled() const {
  1296. return this == NULL ? FALSE : m_bEnableActions;
  1297. }
  1298. AFX_INLINE CXTPCommandBarsContextMenus* CXTPCommandBars::GetContextMenus() const {
  1299. return m_pContextMenus;
  1300. }
  1301. #endif //#if !defined(__XTPCOMMANDBARS_H__)