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

对话框与窗口

开发平台:

Visual C++

  1. // XTPToolBar.h : interface for the CXTPToolBar 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(__XTPTOOLBAR_H__)
  22. #define __XTPTOOLBAR_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. #include "XTPCommandBar.h"
  28. class CXTPDockBar;
  29. class CXTPCommandBars;
  30. class CXTPDockContext;
  31. //===========================================================================
  32. // Summary:
  33. //     CXTPToolBar is a CXTPCommandBar derived class.
  34. //===========================================================================
  35. class _XTP_EXT_CLASS CXTPToolBar : public CXTPCommandBar
  36. {
  37. public:
  38. //{{AFX_CODEJOCK_PRIVATE
  39. class CToolBarInfo;
  40. //}}AFX_CODEJOCK_PRIVATE
  41. private:
  42. class CControlButtonExpand;
  43. class CControlButtonHide;
  44. class CControlButtonCustomize;
  45. public:
  46. //-----------------------------------------------------------------------
  47. // Summary:
  48. //     Constructs a CXTPToolBar object
  49. //-----------------------------------------------------------------------
  50. CXTPToolBar();
  51. //-----------------------------------------------------------------------
  52. // Summary:
  53. //     Destroys a CXTPToolBar object, handles cleanup and deallocation
  54. //-----------------------------------------------------------------------
  55. ~CXTPToolBar();
  56. public:
  57. //-----------------------------------------------------------------------
  58. // Summary:
  59. //     Call this member function to show or hide the toolbar.
  60. // Parameters:
  61. //     bVisible - TRUE to show the toolbar; FALSE to hide.
  62. //-----------------------------------------------------------------------
  63. virtual void SetVisible(BOOL bVisible);
  64. //-----------------------------------------------------------------------
  65. // Summary:
  66. //     Returns a Boolean value that indicates whether the toolbar is
  67. //     visible or hidden.
  68. // Returns:
  69. //     TRUE if the toolbar is visible.
  70. //-----------------------------------------------------------------------
  71. virtual BOOL IsVisible() const { return m_bVisible; }
  72. //-----------------------------------------------------------------------
  73. // Summary:
  74. //     Call this member to set the position of the toolbar.
  75. // Parameters:
  76. //     barPosition - New position of toolbar.
  77. // Returns:
  78. //     TRUE if successful, otherwise returns FALSE.
  79. //-----------------------------------------------------------------------
  80. BOOL SetPosition(XTPBarPosition barPosition);
  81. //-----------------------------------------------------------------------
  82. // Summary:
  83. //     Call this member function to load the toolbar specified by nIDResource.
  84. // Parameters:
  85. //     nIDResource - Resource ID of the toolbar to be loaded.
  86. //     bLoadIcons - TRUE to load icons from application resources.
  87. // Returns:
  88. //     Nonzero if successful; otherwise 0.
  89. //-----------------------------------------------------------------------
  90. BOOL LoadToolBar(UINT nIDResource, BOOL bLoadIcons = TRUE);
  91. public:
  92. //-----------------------------------------------------------------------
  93. // Summary:
  94. //     This method creates the ToolBar control.
  95. // Parameters:
  96. //     dwStyle - Styles for the toolbars.
  97. //     pParentWnd - Specifies the parent window of the TaskPanel control.
  98. //     nID - Specifies the Toolbar control ID.
  99. // Returns:
  100. //     TRUE if successful; otherwise returns FALSE.
  101. //-----------------------------------------------------------------------
  102. BOOL CreateToolBar(DWORD dwStyle, CWnd* pParentWnd, UINT nID = AFX_IDW_TOOLBAR);
  103. //-----------------------------------------------------------------------
  104. // Summary:
  105. //     Retrieves bar information for serialization routines.
  106. // Parameters:
  107. //     pInfo - Points to a CToolBarInfo object.
  108. //-----------------------------------------------------------------------
  109. void GetBarInfo(CToolBarInfo* pInfo);
  110. //-----------------------------------------------------------------------
  111. // Summary:
  112. //     Sets bar information.
  113. // Parameters:
  114. //     pInfo - Points to a CToolBarInfo object.
  115. //-----------------------------------------------------------------------
  116. void SetBarInfo(CToolBarInfo* pInfo);
  117. //-----------------------------------------------------------------------
  118. // Summary:
  119. //     This method calculates the dimensions of a toolbar.
  120. // Parameters:
  121. //     nLength - Length of the bar.
  122. //     dwMode - Mode to dock.
  123. //     nWidth - Width of the bar.
  124. // Returns:
  125. //     Size of the docked toolbar.
  126. //-----------------------------------------------------------------------
  127. virtual CSize CalcDockingLayout(int nLength, DWORD dwMode, int nWidth = 0);
  128. //-----------------------------------------------------------------------
  129. // Summary:
  130. //     This method calculates the dimensions of a toolbar.
  131. // Parameters:
  132. //     nLength - The requested dimension of the control bar, either horizontal or vertical, depending on dwMode.
  133. //     dwMode - Mode to dock.
  134. // Returns:
  135. //     Size of the docked toolbar.
  136. //-----------------------------------------------------------------------
  137. virtual CSize CalcDynamicLayout(int nLength, DWORD dwMode);
  138. //-----------------------------------------------------------------------
  139. // Summary:
  140. //     Call this method to set docking flags.
  141. // Parameters:
  142. //     dwFlags - Flags of docking. Can be any of the values listed in the Remarks section.
  143. // Remarks:
  144. //     dwFlags parameter can be one or more of the following:
  145. //     * <b>xtpFlagAlignTop</b> Allows docking at the top of the client area. .
  146. //     * <b>xtpFlagAlignBottom</b> Allows docking at the bottom of the client area.
  147. //     * <b>xtpFlagAlignLeft</b> Allows docking on the left side of the client area.
  148. //     * <b>xtpFlagAlignRight</b> Allows docking on the left side of the client area.
  149. //     * <b>xtpFlagFloating</b> Allows floating.
  150. //     * <b>xtpFlagHideWrap</b> Allows to hide wrapped controls..
  151. //     * <b>xtpFlagStretched</b> Indicates the bar is stretched..
  152. //-----------------------------------------------------------------------
  153. void EnableDocking(DWORD dwFlags = xtpFlagAlignAny | xtpFlagFloating | xtpFlagHideWrap);
  154. //-----------------------------------------------------------------------
  155. // Summary:
  156. //     Determines if the toolbar is built-in.
  157. // Returns:
  158. //     TRUE if toolbar is built-in; otherwise returns FALSE.
  159. //-----------------------------------------------------------------------
  160. BOOL IsBuiltIn() const;
  161. //-----------------------------------------------------------------------
  162. // Summary:
  163. //     Retrieves the parent dock bar.
  164. // Returns:
  165. //     A pointer to a CXTPDockBar object.
  166. //-----------------------------------------------------------------------
  167. CXTPDockBar* GetDockBar() const;
  168. //-----------------------------------------------------------------------
  169. // Summary:
  170. //     Resets the controls to their original state.
  171. // Parameters:
  172. //     bShowWarningMessage - TRUE to show warning message
  173. //-----------------------------------------------------------------------
  174. virtual void Reset(BOOL bShowWarningMessage);
  175. //-----------------------------------------------------------------------
  176. // Summary:
  177. //     Call this method to hide/show toolbars in preview mode.
  178. // Parameters:
  179. //     bPreview - Preview mode.
  180. //-----------------------------------------------------------------------
  181. void OnSetPreviewMode(BOOL bPreview);
  182. //-----------------------------------------------------------------------
  183. // Summary:
  184. //     The framework calls this member function when a non-system key
  185. //     is pressed.
  186. // Parameters:
  187. //     nChar - Specifies the virtual key code of the given key.
  188. //     lParam   - Specifies additional message-dependent information.
  189. // Returns:
  190. //     TRUE if key handled, otherwise returns FALSE.
  191. //-----------------------------------------------------------------------
  192. BOOL OnHookKeyDown(UINT nChar, LPARAM lParam);
  193. //-----------------------------------------------------------------------
  194. // Summary:
  195. //     This method allows to hide toolbar in a context menu.
  196. // Parameters:
  197. //     bPresent - TRUE to show the toolbar in a context menu.
  198. //-----------------------------------------------------------------------
  199. void SetContextMenuPresent(BOOL bPresent);
  200. //-----------------------------------------------------------------------
  201. // Summary:
  202. //     Call this member to determine if this toolbar is included in
  203. //     the right-click context menu.
  204. //-----------------------------------------------------------------------
  205. BOOL IsContextMenuPresent() const;
  206. //-----------------------------------------------------------------------
  207. // Summary:
  208. //     This method allows to hide toolbar in a customize dialog
  209. // Parameters:
  210. //     bPresent - TRUE to show the toolbar in a customize dialog.
  211. //-----------------------------------------------------------------------
  212. void SetCustomizeDialogPresent(BOOL bPresent);
  213. //-----------------------------------------------------------------------
  214. // Summary:
  215. //     Call this member to determine if this toolbar is included in
  216. //     the customize dialog.
  217. //-----------------------------------------------------------------------
  218. BOOL IsCustomizeDialogPresent() const;
  219. //-----------------------------------------------------------------------
  220. // Summary:
  221. //     Modifies the styles of the toolbar.
  222. // Parameters:
  223. //     dwRemove - Styles to remove.
  224. //     dwAdd - Styles to add.
  225. //-----------------------------------------------------------------------
  226. void ModifyBarStyle(DWORD dwRemove, DWORD dwAdd);
  227. //-----------------------------------------------------------------------
  228. // Summary:
  229. //     Call this method to enable/disable close able property of the
  230. //     command bar.
  231. // Parameters:
  232. //     bCloseable - TRUE to allow toolbar to be closed by user.
  233. //-----------------------------------------------------------------------
  234. void SetCloseable(BOOL bCloseable);
  235. //-----------------------------------------------------------------------
  236. // Summary:
  237. //     Call this method to retrieve the close able property of the
  238. //     command bar.
  239. // Returns:
  240. //     TRUE if the control is close able.
  241. //-----------------------------------------------------------------------
  242. BOOL IsCloseable() const;
  243. //-----------------------------------------------------------------------
  244. // Summary:
  245. //     Call this method to determine if the control is temporary.
  246. // Remarks:
  247. //     Temporary toolbars will not be saved to the system registry when
  248. //     the application is closed (If SaveCommandBars is used), and they
  249. //     will not be restored when the application is opened
  250. //     (If LoadCommandBars is used).
  251. // Returns:
  252. //     TRUE if the control is temporary.
  253. //-----------------------------------------------------------------------
  254. BOOL IsTemporary() const;
  255. //-----------------------------------------------------------------------
  256. // Summary:
  257. //     Call this method to set this control to temporary.
  258. // Parameters:
  259. //     bTemporary - TRUE if this control is temporary.
  260. // Remarks:
  261. //     Temporary toolbars will not be saved to the system registry when
  262. //     the application is closed (If SaveCommandBars is used), and they
  263. //     will not be restored when the application is opened
  264. //     (If LoadCommandBars is used).
  265. //-----------------------------------------------------------------------
  266. void SetTemporary(BOOL bTemporary);
  267. //-----------------------------------------------------------------------
  268. // Summary:
  269. //     Call this method to show/hide expand button of toolbar
  270. // Parameters:
  271. //     bShowExpandButton - TRUE to show expand button; FALSE to hide
  272. //-----------------------------------------------------------------------
  273. void ShowExpandButton(BOOL bShowExpandButton);
  274. //-----------------------------------------------------------------------
  275. // Summary:
  276. //     This method recalculates the position of the toolbar.
  277. //-----------------------------------------------------------------------
  278. void OnRecalcLayout();
  279. //-----------------------------------------------------------------------
  280. // Summary:
  281. //     Determines if window visible in the screen
  282. // Returns:
  283. //     TRUE if toolbar is visible
  284. // See Also: IsVisible
  285. //-----------------------------------------------------------------------
  286. BOOL IsWindowVisible() const;
  287. protected:
  288. //-----------------------------------------------------------------------
  289. // Summary:
  290. //     Creates a toolbar.
  291. // Parameters:
  292. //     pParentWnd - Points to a CWnd object.
  293. //     bFloat     - TRUE to create a floating bar.
  294. // Returns:
  295. //     TRUE if successful; otherwise returns FALSE.
  296. //-----------------------------------------------------------------------
  297. virtual BOOL Create(CWnd* pParentWnd, BOOL bFloat);
  298. //-----------------------------------------------------------------------
  299. // Summary:
  300. //     Reads or writes this object from or to an archive.
  301. // Parameters:
  302. //     pPX - A CXTPPropExchange object to serialize to or from.
  303. //----------------------------------------------------------------------
  304. virtual void DoPropExchange(CXTPPropExchange* pPX);
  305. //-----------------------------------------------------------------------
  306. // Summary:
  307. //     This method makes a copy of the command bar.
  308. // Parameters:
  309. //     pCommandBar - Command bar needed to be copied.
  310. //     bRecursive  - TRUE to copy recursively.
  311. //-----------------------------------------------------------------------
  312. virtual void Copy(CXTPCommandBar* pCommandBar, BOOL bRecursive = FALSE);
  313. protected:
  314. //-----------------------------------------------------------------------
  315. // Summary:
  316. //     This method retrieves borders of toolbar
  317. // Returns:
  318. //     Borders of toolbar
  319. //-----------------------------------------------------------------------
  320. virtual CRect GetBorders();
  321. //-------------------------------------------------------------------------
  322. // Summary:
  323. //     This method is called when paint manager was changed
  324. //-------------------------------------------------------------------------
  325. virtual void OnPaintManagerChanged();
  326. protected:
  327. //-----------------------------------------------------------------------
  328. // Summary:
  329. //     This method is called to check if Toolbar was changed and have to be saved
  330. // Returns:
  331. //     TRUE if toolbar have to be saved
  332. //-----------------------------------------------------------------------
  333. virtual BOOL ShouldSerializeBar();
  334. //-----------------------------------------------------------------------
  335. // Summary:
  336. //     This method is called to restore toolbar from previous state
  337. // Parameters:
  338. //     pCommandBar - previously saved toolbar
  339. //     bSilent - TRUE to restore without warnings
  340. // See Also: ShouldSerializeBar
  341. //-----------------------------------------------------------------------
  342. virtual void MergeToolBar(CXTPCommandBar* pCommandBar, BOOL bSilent);
  343. private:
  344. CSize _CalcDynamicLayout(int nLength, DWORD dwMode);
  345. void BuildCustomizePopup(CXTPCommandBar* pExpandBar);
  346. int _FindNearest(CXTPControls* pControls, CXTPControl* pFind, int nPos, BOOL bVisible = FALSE) const;
  347. void _RestoreDeletedControls();
  348. void _GetHiddenControls(CXTPCommandBar* pExpandBar);
  349. BOOL IsFloatingFrameFocused() const;
  350. protected:
  351. CXTPDockBar* m_pDockBar;            // Parent dock bar.
  352. CXTPDockContext* m_pDockContext;    // Docking context.
  353. BOOL m_bBuiltIn;                    // TRUE if toolbar is built-in.
  354. BOOL m_bTearOff;                    // TRUE if toolbar is tear-offed.
  355. BOOL m_bPreviewVisible;             // TRUE if Toolbar was visible in preview mode.
  356. BOOL m_bPreviewMode;                // TRUE if Toolbar was visible in preview mode.
  357. BOOL m_bTemporary;                  // TRUE if Toolbar is temporary (If it will be saved when the CommandBar layout is saved.)
  358. BOOL m_bShowExpandButton;           // TRUE to show expand button of toolbar.
  359. BOOL m_bContextMenuPresent;         // TRUE if the command bar is present in context menu.
  360. BOOL m_bInRecalcLayout;             // TRUE if RecalcLayout method is called
  361. protected:
  362. //{{AFX_CODEJOCK_PRIVATE
  363. DECLARE_MESSAGE_MAP()
  364. //{{AFX_MSG(CXTPToolBar)
  365. afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  366. afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
  367. afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);
  368. afx_msg BOOL OnNcActivate(BOOL bActive);
  369. afx_msg LRESULT OnFloatStatus(WPARAM wParam, LPARAM);
  370. afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
  371. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  372. afx_msg LRESULT OnNcHitTest(CPoint point);
  373. afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
  374. afx_msg void OnSetFocus(CWnd* pOldWnd);
  375. afx_msg void OnClose();
  376. afx_msg LRESULT OnSizeParent(WPARAM, LPARAM lParam);
  377. afx_msg void OnLButtonDblClk(UINT nFlags, CPoint pt);
  378. //}}AFX_MSG
  379. //}}AFX_CODEJOCK_PRIVATE
  380. private:
  381. BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
  382. DECLARE_XTP_COMMANDBAR(CXTPToolBar)
  383. private:
  384. friend class CXTPCommandBars;
  385. friend class CXTPDockContext;
  386. friend class CXTPDockBar;
  387. friend class CXTPCustomizeToolbarsPage;
  388. friend class CXTPPopupBar;
  389. friend class CControlButtonExpand;
  390. };
  391. //////////////////////////////////////////////////////////////////////////
  392. AFX_INLINE BOOL CXTPToolBar::IsBuiltIn() const{
  393. return m_bBuiltIn;
  394. }
  395. AFX_INLINE CXTPDockBar* CXTPToolBar::GetDockBar() const {
  396. return m_pDockBar;
  397. }
  398. AFX_INLINE void CXTPToolBar::SetContextMenuPresent(BOOL bPresent) {
  399. m_bContextMenuPresent = bPresent;
  400. }
  401. AFX_INLINE BOOL CXTPToolBar::IsContextMenuPresent() const{
  402. return m_bContextMenuPresent;
  403. }
  404. AFX_INLINE void CXTPToolBar::SetCustomizeDialogPresent(BOOL bPresent) {
  405. m_bCustomizeDialogPresent = bPresent;
  406. }
  407. AFX_INLINE BOOL CXTPToolBar::IsCustomizeDialogPresent() const {
  408. return m_bCustomizeDialogPresent;
  409. }
  410. AFX_INLINE void CXTPToolBar::ModifyBarStyle(DWORD dwRemove, DWORD dwAdd) {
  411. m_dwStyle |= dwAdd;
  412. m_dwStyle &= ~dwRemove;
  413. }
  414. AFX_INLINE void CXTPToolBar::SetCloseable(BOOL bCloseable) {
  415. m_bCloseable = bCloseable;
  416. }
  417. AFX_INLINE BOOL CXTPToolBar::IsCloseable() const {
  418. return m_bCloseable;
  419. }
  420. AFX_INLINE BOOL CXTPToolBar::IsTemporary() const {
  421. return m_bTemporary;
  422. }
  423. AFX_INLINE void CXTPToolBar::SetTemporary(BOOL bTemporary) {
  424. m_bTemporary = bTemporary;
  425. }
  426. AFX_INLINE BOOL CXTPToolBar::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) {
  427. return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
  428. }
  429. AFX_INLINE void CXTPToolBar::ShowExpandButton(BOOL bShowExpandButton) {
  430. m_bShowExpandButton = bShowExpandButton;
  431. DelayLayout();
  432. }
  433. AFX_INLINE void CXTPToolBar::OnPaintManagerChanged() {
  434. }
  435. #endif //#if !defined(__XTPTOOLBAR_H__)