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

对话框与窗口

开发平台:

Visual C++

  1. // XTPShortcutBar.h interface for the CXTPShortcutBar class.
  2. //
  3. // This file is a part of the XTREME SHORTCUTBAR 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(__XTPSHORTCUTBAR_H__)
  22. #define __XTPSHORTCUTBAR_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "XTPShortcutBarPaintManager.h"
  28. //-----------------------------------------------------------------------
  29. // Summary:
  30. //     XTP_SBN_SELECTION_CHANGED is used to indicate that the selection
  31. //     has changed in the shortcut bar.
  32. // Remarks:
  33. //     XTP_SBN_SELECTION_CHANGED is sent in the XTPWM_SHORTCUTBAR_NOTIFY
  34. //     message to the owner window when the selection has changed.
  35. //
  36. //     The selection changed when a user clicks on a shortcut bar item or
  37. //     the items are navigated with the arrow keys.
  38. // Example:
  39. //   See example of XTPWM_SHORTCUTBAR_NOTIFY
  40. // See Also:
  41. //     XTPWM_SHORTCUTBAR_NOTIFY, XTP_SBN_RCLICK
  42. //-----------------------------------------------------------------------
  43. const UINT XTP_SBN_SELECTION_CHANGING  = 1;
  44. //-----------------------------------------------------------------------
  45. // Summary:
  46. //     XTP_SBN_SELECTION_CHANGING is used to indicate that value for the selection
  47. //     is currently changing.
  48. // Remarks:
  49. //     XTP_SBN_SELECTION_CHANGING is sent in the XTPWM_SHORTCUTBAR_NOTIFY
  50. //     message to the owner window when the selection is in the process of changing.
  51. //
  52. //     The selection changed when a user clicks on a shortcut bar item or
  53. //     the items are navigated with the arrow keys.
  54. // See Also:
  55. //     XTPWM_SHORTCUTBAR_NOTIFY, XTP_SBN_RCLICK
  56. //-----------------------------------------------------------------------
  57. const UINT XTP_SBN_SELECTION_CHANGED = 3;
  58. //-----------------------------------------------------------------------
  59. // Summary:
  60. //     XTP_SBN_RCLICK is used to indicate that the user has pressed the
  61. //     right mouse button on a shortcut bar item.
  62. // Remarks:
  63. //     XTP_SBN_RCLICK is sent in the XTPWM_SHORTCUTBAR_NOTIFY message to the
  64. //     owner window when the user has right clicked on a shortcut bar item.
  65. // Example:
  66. //   See example of XTPWM_SHORTCUTBAR_NOTIFY
  67. // See Also:
  68. //     XTPWM_SHORTCUTBAR_NOTIFY, XTP_SBN_SELECTION_CHANGING
  69. //-----------------------------------------------------------------------
  70. const UINT XTP_SBN_RCLICK = 2;
  71. //-----------------------------------------------------------------------
  72. // Summary:
  73. //     The XTPWM_SHORTCUTBAR_NOTIFY message is sent to the CXTPShortcutBar owner window
  74. //     whenever an action occurs within the CXTPShortcutBar
  75. // Parameters:
  76. //     nAction -  Value of wParam specifies a ShortcutBar value that indicates the user's
  77. //                request.
  78. //     pItem    - The value of lParam points to an CXTPShortcutBarItem object that contains information for the
  79. //                specified item. This pointer should <b>never</b> be NULL.
  80. // Remarks:
  81. //     nAction parameter can be one of the following values:
  82. //         * <b>XTP_SBN_SELECTION_CHANGING</b> Indicates the selection has changed in the shortcut bar.
  83. //         * <b>XTP_SBN_RCLICK</b> Indicates the user pressed the right mouse button on the shortcut bar item.
  84. //
  85. // Returns:
  86. //     If the application is to process this message, the return value should be TRUE, otherwise the
  87. //     return value is FALSE.
  88. // Example:
  89. //     Here is an example of how an application would process the XTPWM_SHORTCUTBAR_NOTIFY
  90. //     message.
  91. // <code>
  92. //
  93. // BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  94. //     //{{AFX_MSG_MAP(CMainFrame)
  95. //     ON_MESSAGE(XTPWM_SHORTCUTBAR_NOTIFY, OnShortcutBarNotify)
  96. //     //}}AFX_MSG_MAP
  97. // END_MESSAGE_MAP()
  98. //
  99. // LRESULT CMainFrame::OnShortcutBarNotify(WPARAM wParam, LPARAM lParam)
  100. // {
  101. //      switch (wParam)
  102. //      {
  103. //          case XTP_SBN_SELECTION_CHANGING:
  104. //              {
  105. //                  CXTPShortcutBarItem* pItem = (CXTPShortcutBarItem*)lParam;
  106. //                  TRACE(_T("Selection Changing. Item.Caption = %sn"), pItem->GetCaption());
  107. //
  108. //                  // TODO: You can return -1 to ignore changing
  109. //
  110. //              }
  111. //              return TRUE;
  112. //          case XTP_SBN_RCLICK:
  113. //              {
  114. //                  CPoint point(lParam);
  115. //                  CXTPShortcutBarItem* pItem = m_wndShortcutBar.HitTest(point);
  116. //                  if (pItem)
  117. //                  {
  118. //                      TRACE(_T("RClick. Item.ID = %in"), pItem->GetID());
  119. //
  120. //                      CMenu mnu;
  121. //                      mnu.LoadMenu(IDR_POPUP_MENU);
  122. //
  123. //                      m_wndShortcutBar.ClientToScreen(&point);
  124. //
  125. //                      CXTPCommandBars::TrackPopupMenu(mnu.GetSubMenu(0), 0, point.x, point.y, AfxGetMainWnd());
  126. //
  127. //                  }
  128. //              }
  129. //              return TRUE;
  130. //
  131. //
  132. //      }
  133. //      return 0;
  134. //  }
  135. // </code>
  136. // See Also:
  137. //     XTP_SBN_SELECTION_CHANGING, XTP_SBN_RCLICK, CXTPShortcutBar
  138. //-----------------------------------------------------------------------
  139. const UINT XTPWM_SHORTCUTBAR_NOTIFY = (WM_USER + 9190 + 1);
  140. class CXTPShortcutBar;
  141. class CXTPImageManager;
  142. class CXTPToolTipContext;
  143. //===========================================================================
  144. // Summary:
  145. //     CXTPShortcutBarItem is the base class representing an item of the
  146. //     ShortcutBar Control.
  147. //===========================================================================
  148. class _XTP_EXT_CLASS CXTPShortcutBarItem : public CXTPCmdTarget
  149. {
  150. protected:
  151. //-----------------------------------------------------------------------
  152. // Summary:
  153. //     Constructs a CXTPShortcutBarItem object.
  154. // Parameters:
  155. //     pShortcutBar - Points to the parent ShortcutBar class.
  156. //     nID - Identifier of the item.
  157. //     pWnd - Client window of the item
  158. //     pShortcutBar - Points to the parent ShortcutBar class.
  159. //-----------------------------------------------------------------------
  160. CXTPShortcutBarItem(CXTPShortcutBar* pShortcutBar);
  161. CXTPShortcutBarItem(CXTPShortcutBar* pShortcutBar, UINT nID, CWnd* pWnd); // <combine CXTPShortcutBarItem::CXTPShortcutBarItem@CXTPShortcutBar*>
  162. public:
  163. //-----------------------------------------------------------------------
  164. // Summary:
  165. //     Call this method to set the identifier of the item.
  166. // Parameters:
  167. //     nID - The new identifier of the item.
  168. //-----------------------------------------------------------------------
  169. void SetID(int nID);
  170. //-----------------------------------------------------------------------
  171. // Summary:
  172. //     Call this method to get the identifier of the item.
  173. // Returns:
  174. //     Identifier of the item.
  175. //-----------------------------------------------------------------------
  176. int GetID() const;
  177. //-----------------------------------------------------------------------
  178. // Summary:
  179. //     Call this member to set the icon's identifier.
  180. // Parameters:
  181. //     nId - Icon's identifier to be set.
  182. //-----------------------------------------------------------------------
  183. void SetIconId(int nId);
  184. //-----------------------------------------------------------------------
  185. // Summary:
  186. //     Call this member to get the icon's identifier.
  187. // Returns:
  188. //     An icon's identifier of the item.
  189. //-----------------------------------------------------------------------
  190. int GetIconId() const;
  191. //-----------------------------------------------------------------------
  192. // Summary:
  193. //     Call this method to set the caption of the item.
  194. // Parameters:
  195. //     strCaption - The new caption of the item.
  196. //-----------------------------------------------------------------------
  197. void SetCaption(LPCTSTR strCaption);
  198. //-----------------------------------------------------------------------
  199. // Summary:
  200. //     Call this method to get the caption of the item.
  201. // Returns:
  202. //     A CString object containing the caption of the item.
  203. //-----------------------------------------------------------------------
  204. CString GetCaption() const;
  205. //-----------------------------------------------------------------------
  206. // Summary:
  207. //     Call this member function to set the visibility state of the item.
  208. // Parameters:
  209. //     bVisible - TRUE if the item is visible; otherwise FALSE.
  210. //-----------------------------------------------------------------------
  211. void SetVisible(BOOL bVisible);
  212. //-----------------------------------------------------------------------
  213. // Summary:
  214. //     Call this member function to determine if the item is visible.
  215. // Returns:
  216. //     TRUE if the item is visible; otherwise FALSE.
  217. //-----------------------------------------------------------------------
  218. BOOL IsVisible() const;
  219. //-----------------------------------------------------------------------
  220. // Summary:
  221. //     Associates ToolTip text with the item.
  222. // Parameters:
  223. //     strTooltip - The ToolTip text to display when the mouse cursor is over the item.
  224. //-----------------------------------------------------------------------
  225. void SetTooltip(LPCTSTR strTooltip);
  226. //-----------------------------------------------------------------------
  227. // Summary:
  228. //     Retrieves the ToolTip text associated with the item.
  229. // Returns:
  230. //     The ToolTip text for the item.
  231. //-----------------------------------------------------------------------
  232. CString GetTooltip() const;
  233. //-----------------------------------------------------------------------
  234. // Summary:
  235. //     Call this member function to determine if the item is expanded.
  236. // Returns:
  237. //     TRUE if the item is expanded; otherwise FALSE.
  238. //-----------------------------------------------------------------------
  239. BOOL IsExpanded() const;
  240. //-----------------------------------------------------------------------
  241. // Summary:
  242. //     Call this member function to determine if the item is expand button.
  243. // Returns:
  244. //     TRUE if the item is expand button; otherwise FALSE.
  245. //-----------------------------------------------------------------------
  246. BOOL IsItemExpandButton() const;
  247. //-----------------------------------------------------------------------
  248. // Summary:
  249. //     Call this member function to get the parent ShortcutBar class.
  250. // Returns:
  251. //     A Pointer to the parent CXTPShortcutBar class.
  252. //-----------------------------------------------------------------------
  253. CXTPShortcutBar* GetShortcutBar() const;
  254. //-----------------------------------------------------------------------
  255. // Summary:
  256. //     This method retrieves the dimensions of the rectangle that bounds the item.
  257. // Returns:
  258. //     CRect object contains the bounding rectangle of the item.
  259. //-----------------------------------------------------------------------
  260. CRect GetItemRect() const;
  261. //-----------------------------------------------------------------------
  262. // Summary:
  263. //     This method sets the 32-bit value associated with the item.
  264. // Parameters:
  265. //     dwData - Contains the new value to associate with the item.
  266. //-----------------------------------------------------------------------
  267. void SetItemData(DWORD_PTR dwData);
  268. //-----------------------------------------------------------------------
  269. // Summary:
  270. //     This method retrieves the application-supplied 32-bit value associated with the item
  271. // Returns:
  272. //     The 32-bit value associated with the item
  273. //-----------------------------------------------------------------------
  274. DWORD_PTR GetItemData() const;
  275. //-----------------------------------------------------------------------
  276. // Summary:
  277. //     Call this method to retrieve the image of this shortcut bar item.
  278. // Parameters:
  279. //     nWidth - Width of the icon to be retrieved. (CXTPImageManagerIcon
  280. //              can have multiple image sizes for the same item, the
  281. //              shortcut bar uses both 16x16 and 24x24 images depending on
  282. //              if the item is displayed in the extended shortcut list).
  283. //              If a 16x16 icon is to be retrieved, then pass in 16 for
  284. //              the width.
  285. // Returns:
  286. //     A pointer the CXTPImageManagerIcon object for this shortcut bar
  287. //     item.
  288. //-----------------------------------------------------------------------
  289. CXTPImageManagerIcon* GetImage(int nWidth) const;
  290. //-----------------------------------------------------------------------
  291. // Summary:
  292. //     Call this member function to determine is the ShortcutBarItem is hidden.
  293. //     An item is hidden when there are more items then can be displayed
  294. //     in the bottom shortcut bar.  As the shortcut bar is expanded, items
  295. //     that were hidden will become visible as more items are added to the
  296. //     expanded shortcut bar.
  297. // Returns:
  298. //     TRUE is the ShortcutBarItem is hidden, otherwise FALSE
  299. //-----------------------------------------------------------------------
  300. BOOL IsHidden() const;
  301. //-----------------------------------------------------------------------
  302. // Summary:
  303. //     Call this member to determine if the item is currently selected.
  304. //     Note that multiple items can be selected at one time, but only one
  305. //     can have focus.
  306. // Returns:
  307. //     TRUE if the item is currently selected.
  308. //-----------------------------------------------------------------------
  309. BOOL IsSelected() const;
  310. //-----------------------------------------------------------------------
  311. // Summary:
  312. //     Call this member to select this item.  Multiple items can have
  313. //     focus if CXTPShortcutBar::m_bSingleSelection is FALSE.
  314. // Parameters:
  315. //     bSelected - TRUE if the item will be selected, FALSE to no longer
  316. //                 select the item.
  317. //-----------------------------------------------------------------------
  318. void SetSelected(BOOL bSelected);
  319. //-----------------------------------------------------------------------
  320. // Summary:
  321. //     Call this member to get child window of the item.
  322. // Returns:
  323. //     CWnd pointer to child window
  324. //-----------------------------------------------------------------------
  325. CWnd* GetClientWindow() const;
  326. //-----------------------------------------------------------------------
  327. // Summary:
  328. //     Call this member to set child window that will be visible
  329. //     in client part of the shortcutbar when item is selected.
  330. // Parameters:
  331. //     pWnd - New child window to be set.
  332. //-----------------------------------------------------------------------
  333. void SetClientWindow(CWnd* pWnd);
  334. protected:
  335. CString m_strCaption;               // Caption for the item.
  336. CString m_strTooltip;               // Tooltip for the item.
  337. int m_nID;                          // Item's identifier.
  338. CRect m_rcItem;                     // Bounding rectangle of the item
  339. BOOL m_bVisible;                    // TRUE if the item is visible
  340. BOOL m_bExpanded;                   // TRUE if the item is expanded
  341. BOOL m_bHidden;                     // TRUE if the item is hidden
  342. HWND m_hwndChild;                   // Child window associated with the item
  343. BOOL m_bExpandButton;               // True if the item is expand button
  344. DWORD_PTR m_dwData;                 // The 32-bit value associated with the item
  345. CXTPShortcutBar* m_pShortcutBar;    // Parent CXTPShortcutBar class
  346. BOOL m_bSelected;                   // TRUE if item selected
  347. int m_nIconId;                      // Identifier of the item's image.
  348. private:
  349. friend class CXTPShortcutBar;
  350. };
  351. //-----------------------------------------------------------------------
  352. // Summary:
  353. //     CXTPShortcutBar is a CWnd derived class. It is used to implement
  354. //     an Outlook2003 ShortcutBar style control.
  355. //-----------------------------------------------------------------------
  356. class _XTP_EXT_CLASS CXTPShortcutBar : public CWnd
  357. {
  358. //-----------------------------------------------------------------------
  359. // Summary:
  360. //     Array of CXTPShortcutBarItem objects
  361. //-----------------------------------------------------------------------
  362. typedef CArray<CXTPShortcutBarItem*, CXTPShortcutBarItem*> CShortcutArray;
  363. public:
  364. //-----------------------------------------------------------------------
  365. // Summary:
  366. //     Constructs a CXTPShortcutBar object.
  367. //-----------------------------------------------------------------------
  368. CXTPShortcutBar();
  369. //-----------------------------------------------------------------------
  370. // Summary:
  371. //     Destroys a CXTPShortcutBar object, handles cleanup and deallocation.
  372. //-----------------------------------------------------------------------
  373. virtual ~CXTPShortcutBar();
  374. public:
  375. //-----------------------------------------------------------------------
  376. // Summary:
  377. //     This method creates the ShortcutBar control
  378. // Parameters:
  379. //     dwStyle - Style for the ShortcutBar.
  380. //     rect -  Specifies the size and position of the ShortcutBar control.
  381. //     pParentWnd - Specifies the parent window of the ShortcutBar control.
  382. //     nID - Specifies the ShortcutBar control ID.
  383. // Returns:
  384. //     TRUE if successful, otherwise returns FALSE.
  385. //-----------------------------------------------------------------------
  386. BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  387. //-----------------------------------------------------------------------
  388. // Summary:
  389. //     Register the window class if it has not already been registered.
  390. // Parameters:
  391. //     hInstance - Instance of resource where control is located
  392. // Returns:
  393. //     TRUE if the window class was successfully registered.
  394. //-----------------------------------------------------------------------
  395. BOOL RegisterWindowClass(HINSTANCE hInstance = NULL);
  396. public:
  397. //-----------------------------------------------------------------------
  398. // Summary:
  399. //     Call this function to retrieve state information from the registry or .INI file.
  400. // Parameters:
  401. //     lpszProfileName - Points to a null-terminated string that specifies the name of a
  402. //     section in the initialization file or a key in the Windows registry where state
  403. //     information is stored.
  404. //-----------------------------------------------------------------------
  405. void LoadState(LPCTSTR lpszProfileName);
  406. //-----------------------------------------------------------------------
  407. // Summary:
  408. //     Call this function to save the state information to the registry or .INI file.
  409. // Parameters:
  410. //     lpszProfileName - Points to a null-terminated string that specifies the name of a
  411. //     section in the initialization file or a key in the Windows registry where state
  412. //     information is stored.
  413. //-----------------------------------------------------------------------
  414. void SaveState(LPCTSTR lpszProfileName);
  415. public:
  416. //-----------------------------------------------------------------------
  417. // Summary:
  418. //     Call this method to add a new item.
  419. // Parameters:
  420. //     nID - Identifier of item that is to be added.
  421. //     pWnd - A Pointer to CWnd class associated with new item.
  422. // Returns:
  423. //     A pointer to a CXTPShortcutBarItem object.
  424. //-----------------------------------------------------------------------
  425. CXTPShortcutBarItem* AddItem(UINT nID, CWnd* pWnd = NULL);
  426. //-----------------------------------------------------------------------
  427. // Summary:
  428. //     Call this method to find an item with the specified identifier.
  429. // Parameters:
  430. //     nID - Identifier of the item needed to find.
  431. // Returns:
  432. //     A pointer to a CXTPShortcutBarItem object.
  433. //-----------------------------------------------------------------------
  434. CXTPShortcutBarItem* FindItem(int nID) const;
  435. //-----------------------------------------------------------------------
  436. // Summary:
  437. //     Call this method to select the specified item.
  438. // Parameters:
  439. //     pItem - Item to be selected.
  440. //-----------------------------------------------------------------------
  441. void SelectItem(CXTPShortcutBarItem* pItem);
  442. //-----------------------------------------------------------------------
  443. // Summary:
  444. //     Call this method to show/hide expand button
  445. // Parameters:
  446. //     bShow - TRUE to show; FALSE to hide
  447. //-----------------------------------------------------------------------
  448. void ShowExpandButton(BOOL bShow);
  449. //-----------------------------------------------------------------------
  450. // Summary:
  451. //     Determines if expand button visible
  452. // Returns:
  453. //     TRUE if expand button is visible; otherwise FALSE;
  454. //-----------------------------------------------------------------------
  455. BOOL IsExpandButtonVisible() const;
  456. //-----------------------------------------------------------------------
  457. // Summary:
  458. //     Call this method to remove the item.
  459. // Parameters:
  460. //     nID - Identifier of the item to delete.
  461. //-----------------------------------------------------------------------
  462. void RemoveItem(int nID);
  463. //-----------------------------------------------------------------------
  464. // Summary:
  465. //     Call this method to remove all items.
  466. //-----------------------------------------------------------------------
  467. void RemoveAllItems();
  468. //-----------------------------------------------------------------------
  469. // Summary:
  470. //     This method retrieves an item with specified index.
  471. // Parameters:
  472. //     nIndex - Specifies the zero-based index of the item to retrieve.
  473. // Returns:
  474. //     A pointer to a CXTPShortcutBarItem object.
  475. //-----------------------------------------------------------------------
  476. CXTPShortcutBarItem* GetItem(int nIndex) const;
  477. //-----------------------------------------------------------------------
  478. // Summary:
  479. //     This method determines where a point lies in a specified item.
  480. // Parameters:
  481. //     pt - Specifies the point to be tested.
  482. // Returns:
  483. //     A pointer to a CXTPShortcutBarItem item that occupies the specified point or NULL
  484. //     if no item occupies the point.
  485. //-----------------------------------------------------------------------
  486. CXTPShortcutBarItem* HitTest(CPoint pt) const;
  487. //-----------------------------------------------------------------------
  488. // Summary:
  489. //     This method sets the minimum height of the client area in a ShortcutBar control.
  490. //     The default value is 200.
  491. // Parameters:
  492. //     nMinHeight - Specifies the minimum height in pixels of the client.
  493. //-----------------------------------------------------------------------
  494. void SetMinimumClientHeight(int nMinHeight);
  495. //-----------------------------------------------------------------------
  496. // Summary:
  497. //     Call this method to determine gripper rectangle.
  498. // Returns:
  499. //     CRect object contains gripper bounding rectangle.
  500. //-----------------------------------------------------------------------
  501. CRect GetGripperRect() const;
  502. //-----------------------------------------------------------------------
  503. // Summary:
  504. //     Call this method to get size of items
  505. // Returns:
  506. //     CSize object contains size of items
  507. //-----------------------------------------------------------------------
  508. CSize GetItemSize() const;
  509. //-----------------------------------------------------------------------
  510. // Summary:
  511. //     Call this method to set size of items
  512. // Parameters:
  513. //     szItem - Size of the item.
  514. //-----------------------------------------------------------------------
  515. void SetItemSize(CSize szItem);
  516. //-----------------------------------------------------------------------
  517. // Summary:
  518. //     This method determines the count of visible lines in the ShortcutBar control.
  519. // Returns:
  520. //     Count of visible lines
  521. // See Also:
  522. //     SetExpandedLinesCount
  523. //-----------------------------------------------------------------------
  524. int GetExpandedLinesCount() const;
  525. //-----------------------------------------------------------------------
  526. // Summary:
  527. //     This method determines the height of visible lines in the ShortcutBar control.
  528. // Returns:
  529. //     Height of visible lines
  530. // See Also:
  531. //     SetExpandedLinesHeight
  532. //-----------------------------------------------------------------------
  533. int GetExpandedLinesHeight() const;
  534. //-----------------------------------------------------------------------
  535. // Summary:
  536. //     This method sets the count of lines that are visible in the ShortcutBar control.
  537. // Parameters:
  538. //     nCount - Number of visible lines.
  539. // See Also:
  540. //     GetExpandedLinesCount
  541. //-----------------------------------------------------------------------
  542. void SetExpandedLinesCount(int nCount);
  543. //-----------------------------------------------------------------------
  544. // Summary:
  545. //     This method sets the the height of  lines that are visible in the ShortcutBar control.
  546. // Parameters:
  547. //     nHeight - Height of visible lines.
  548. // See Also:
  549. //     SetExpandedLinesCount, GetExpandedLinesCount
  550. //-----------------------------------------------------------------------
  551. void SetExpandedLinesHeight(int nHeight);
  552. //-----------------------------------------------------------------------
  553. // Summary:
  554. //     Call this method to enable/disable resize client area
  555. // Parameters:
  556. //     bAllowResize - TRUE to allow resize; FALSE to disable
  557. // See Also:
  558. //     SetExpandedLinesCount
  559. //-----------------------------------------------------------------------
  560. void AllowGripperResize(BOOL bAllowResize);
  561. //-----------------------------------------------------------------------
  562. // Summary:
  563. //     Returns the hot item in the ShortcutBar control.
  564. // Returns:
  565. //     Pointer to the hot item.
  566. //-----------------------------------------------------------------------
  567. CXTPShortcutBarItem* GetHotItem() const;
  568. //-----------------------------------------------------------------------
  569. // Summary:
  570. //     Returns the selected item in the ShortcutBar control.
  571. // Returns:
  572. //     Pointer to the selected item.
  573. //-----------------------------------------------------------------------
  574. CXTPShortcutBarItem* GetSelectedItem() const;
  575. //-----------------------------------------------------------------------
  576. // Summary:
  577. //     Call this method to allow only one item to be selected.
  578. // Parameters:
  579. //     bSingleSelection - TRUE to use single selection.
  580. // See Also: IsSingleSelection, SetSelectItemOnFocus
  581. //-----------------------------------------------------------------------
  582. void SetSingleSelection(BOOL bSingleSelection = TRUE);
  583. //-----------------------------------------------------------------------
  584. // Summary:
  585. //     Call this method to get Single Selection property of control.
  586. // See Also: SetSingleSelection, SetSelectItemOnFocus
  587. //-----------------------------------------------------------------------
  588. BOOL IsSingleSelection() const;
  589. //-----------------------------------------------------------------------
  590. // Summary:
  591. //     Call this method to show active item on top of controls
  592. // Parameters:
  593. //     bActiveItemOnTop - TRUE to show active item on top of controls
  594. // See Also: IsShowActiveItemOnTop
  595. //-----------------------------------------------------------------------
  596. void ShowActiveItemOnTop(BOOL bActiveItemOnTop);
  597. //-----------------------------------------------------------------------
  598. // Summary:
  599. //     Call this method to get ShowActiveItemOnTop property of control.
  600. // See Also: ShowActiveItemOnTop
  601. //-----------------------------------------------------------------------
  602. BOOL IsShowActiveItemOnTop() const;
  603. //-----------------------------------------------------------------------
  604. // Summary:
  605. //     Call this method to allow resize gripper by pixel
  606. // Parameters:
  607. //     bAllowFreeResize - TRUE to allow resize gripper by pixel
  608. // See Also: IsShowActiveItemOnTop
  609. //-----------------------------------------------------------------------
  610. void AllowFreeResize(BOOL bAllowFreeResize);
  611. // Summary:
  612. //     Determines if gripper allowed to resize by pixel.
  613. // See Also: ShowActiveItemOnTop
  614. //-----------------------------------------------------------------------
  615. BOOL IsAllowFreeResize() const;
  616. //-----------------------------------------------------------------------
  617. // Summary:
  618. //     Call this method to allow collapse items
  619. // Parameters:
  620. //     bAllowCollapse - TRUE to allow collapse items
  621. //-----------------------------------------------------------------------
  622. void AllowCollapse(BOOL bAllowCollapse);
  623. //-----------------------------------------------------------------------
  624. // Summary:
  625. //     Call this method to show gripper.
  626. // Parameters:
  627. //     bShowGripper - TRUE to show gripper; FALSE to hide
  628. //-----------------------------------------------------------------------
  629. void ShowGripper(BOOL bShowGripper);
  630. //-----------------------------------------------------------------------
  631. // Summary:
  632. //     Returns the pressed item in the ShortcutBar control.
  633. // Returns:
  634. //     Pointer to the pressed item.
  635. //-----------------------------------------------------------------------
  636. CXTPShortcutBarItem* GetPressedItem() const;
  637. //-----------------------------------------------------------------------
  638. // Summary:
  639. //     Determines visibility of client pane.
  640. // Returns:
  641. //     TRUE if client pane is visible.
  642. //-----------------------------------------------------------------------
  643. BOOL IsClientPaneVisible() const;
  644. //-----------------------------------------------------------------------
  645. // Summary:
  646. //     Call this member to show or hide client pane.
  647. // Parameters:
  648. //     bVisible - TRUE to show client pane; FALSE to hide.
  649. //-----------------------------------------------------------------------
  650. void SetClientPaneVisible(BOOL bVisible);
  651. //-----------------------------------------------------------------------
  652. // Summary:
  653. //     Call this method to set new image manager.
  654. // Parameters:
  655. //     pImageManager - Points to a CXTPImageManager object to be set
  656. // Example:
  657. // <code>
  658. //     CXTPImageManager* pImageManager = new CXTPImageManager();
  659. //     pImageManager->SetIcons(IDR_MAINFRAME);
  660. //     m_wndShortcutBar.SetImageManager(pImageManager);
  661. // </code>
  662. // See Also:
  663. //     GetImageManager
  664. //-----------------------------------------------------------------------
  665. void SetImageManager(CXTPImageManager* pImageManager);
  666. //-----------------------------------------------------------------------
  667. // Summary:
  668. //     Call this method to get a pointer to the image manager of shortcut
  669. //     bar control.
  670. // Returns:
  671. //     Pointer to the image manager of shortcut bar control.
  672. // Remarks:
  673. //     The image manager is used to hold all of the icons displayed in the
  674. //     shortcut bar control.
  675. // See Also:
  676. //     SetImageManager
  677. //-----------------------------------------------------------------------
  678. CXTPImageManager* GetImageManager() const;
  679. //-----------------------------------------------------------------------
  680. // Summary:
  681. //     Call this member to determine how many CXTPShortcutBarItem(s) are int he
  682. //     shortcut bar.
  683. // Returns:
  684. //     Number of shortcut bar items in the shortcut bar.
  685. //-----------------------------------------------------------------------
  686. int GetItemCount() const;
  687. //-----------------------------------------------------------------------
  688. // Summary:
  689. //     Call this member to set right-to-left mode.
  690. // Parameters:
  691. //     bRightToLeft - TRUE to set right-to-left reading-order properties.
  692. //-----------------------------------------------------------------------
  693. void SetLayoutRTL(BOOL bRightToLeft);
  694. //-----------------------------------------------------------------------
  695. // Summary:
  696. //     Retrieves bounding rectangle of shortcut bar client
  697. // Returns:
  698. //     Bounding rectangle of shortcut bar client
  699. //-----------------------------------------------------------------------
  700. CRect GetClientPaneRect() const;
  701. public:
  702. //-----------------------------------------------------------------------
  703. // Summary:
  704. //     Call this member to switch the visual theme of the ShortcutBar control.
  705. // Parameters:
  706. //     paintTheme - New visual theme. Can be any of the values listed in the Remarks section.
  707. // Remarks:
  708. //     paintTheme can be one of the following:
  709. //     * <b>xtpShortcutThemeOffice2000</b> Enables Office 2000 style theme.
  710. //     * <b>xtpShortcutThemeOfficeXP</b> Enables Office XP style theme.
  711. //     * <b>xtpShortcutThemeOffice2003</b> Enables Office 2003 style theme.
  712. //     * <b>xtpTaskPanelThemeShortcutBarOffice2007</b> Enables Office 2007 style theme.
  713. //
  714. // See Also:
  715. //     GetCurrentTheme, SetCustomTheme, XTPShortcutBarPaintTheme
  716. //-----------------------------------------------------------------------
  717. void SetTheme(XTPShortcutBarPaintTheme paintTheme);
  718. //-----------------------------------------------------------------------
  719. // Summary:
  720. //     Call this member to set a custom theme.
  721. // Parameters:
  722. //     pPaintManager - New paint manager.
  723. // See Also:
  724. //     GetCurrentTheme, SetTheme, XTPShortcutBarPaintTheme
  725. //-----------------------------------------------------------------------
  726. void SetCustomTheme(CXTPShortcutBarPaintManager* pPaintManager);
  727. //-----------------------------------------------------------------------
  728. // Summary:
  729. //     Call this member to get the current paint manager.
  730. // Returns:
  731. //     The current paint manager.
  732. //-----------------------------------------------------------------------
  733. CXTPShortcutBarPaintManager* GetPaintManager() const;
  734. //-----------------------------------------------------------------------
  735. // Summary:
  736. //     Call this member to get the current visual theme.
  737. // Returns:
  738. //     The current theme.
  739. // See Also:
  740. //     SetTheme, SetCustomTheme, XTPShortcutBarPaintTheme
  741. //-----------------------------------------------------------------------
  742. XTPShortcutBarPaintTheme GetCurrentTheme() const;
  743. //-----------------------------------------------------------------------
  744. // Summary:
  745. //     Call this method to redraw control.
  746. //-----------------------------------------------------------------------
  747. void RedrawControl();
  748. //-----------------------------------------------------------------------
  749. // Summary:
  750. //     Call this method to get tooltip context pointer.
  751. //-----------------------------------------------------------------------
  752. CXTPToolTipContext* GetToolTipContext() const;
  753. //-----------------------------------------------------------------------
  754. // Summary:
  755. //     Call this method to determine the number of visible items
  756. // Returns:
  757. //     Number of visible items
  758. //-----------------------------------------------------------------------
  759. int GetVisibleItemsCount() const;
  760. //-----------------------------------------------------------------------
  761. // Summary:
  762. //     Call this method to determine the number of collapsed items
  763. // Returns:
  764. //     Number of collapsed items
  765. //-----------------------------------------------------------------------
  766. int GetCollapsedItemsCount() const;
  767. //-----------------------------------------------------------------------
  768. // Summary:
  769. //     Call this method to reposition items.
  770. //-----------------------------------------------------------------------
  771. void Reposition();
  772. protected:
  773. //-----------------------------------------------------------------------
  774. // Summary:
  775. //     This method is called when reposition is done.
  776. //-----------------------------------------------------------------------
  777. virtual void OnRepositionDone();
  778. //-----------------------------------------------------------------------
  779. // Summary:
  780. //     This method is called when expand button is pressed.
  781. // Parameters:
  782. //     pExpandButton - A pointer to expand button.
  783. //-----------------------------------------------------------------------
  784. virtual void OnExpandButtonDown(CXTPShortcutBarItem* pExpandButton);
  785. //-----------------------------------------------------------------------
  786. // Summary:
  787. //     Call this method to set hot item.
  788. // Parameters:
  789. //     pItem - Item to be hot.
  790. //-----------------------------------------------------------------------
  791. void SetHotItem(CXTPShortcutBarItem* pItem);
  792. protected:
  793. //{{AFX_CODEJOCK_PRIVATE
  794. DECLARE_MESSAGE_MAP()
  795. //{{AFX_VIRTUAL(CXTPShortcutBar)
  796. BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
  797. INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
  798. void PreSubclassWindow();
  799. BOOL PreCreateWindow(CREATESTRUCT& cs);
  800. //}}AFX_VIRTUAL
  801. //{{AFX_MSG(CXTPShortcutBar)
  802. afx_msg void OnPaint();
  803. afx_msg LRESULT OnPrintClient(WPARAM wParam, LPARAM /*lParam*/);
  804. void OnDraw(CDC* pDC);
  805. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  806. afx_msg void OnSize(UINT nType, int cx, int cy);
  807. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  808. afx_msg void OnNcPaint();
  809. afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  810. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  811. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  812. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  813. afx_msg void OnCaptureChanged(CWnd* pWnd);
  814. afx_msg void OnMouseLeave();
  815. afx_msg void OnSysColorChange();
  816. afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
  817. afx_msg void OnRButtonUp(UINT nFlags, CPoint point) ;
  818. afx_msg LRESULT OnExpandPopupExecute(WPARAM wparam, LPARAM lParam);
  819. afx_msg void OnShowMoreButtons();
  820. afx_msg void OnShowFewerButtons();
  821. afx_msg void OnUpdateShowMoreButtons(CCmdUI* pCmdUI);
  822. afx_msg void OnUpdateShowFewerButtons(CCmdUI* pCmdUI);
  823. //}}AFX_MSG
  824. //}}AFX_CODEJOCK_PRIVATE
  825. private:
  826. BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
  827. protected:
  828. CXTPShortcutBarPaintManager* m_pPaintManager;   // Current paint manager.
  829. CXTPImageManager* m_pImageManager;      // Current image manager.
  830. int m_nExpandedLines;                   // Number of lines currently visible
  831. int m_nDesiredExpandedLinesHeight;      // Desired visible lines height height.
  832. int m_nMinClientHeight;                 // The height of client area.
  833. BOOL m_bAllowResize;                    // TRUE to allow resize
  834. XTPShortcutBarPaintTheme m_paintTheme;  // Current theme.
  835. CShortcutArray m_arrItems;              // Array of items.
  836. CSize m_szItem;                         // Size of items
  837. CRect m_rcClient;                       // Client's rectangle.
  838. CRect m_rcGripper;                      // Gripper's rectangle.
  839. HWND m_hwndClient;                      // Client window handle
  840. HCURSOR m_hSizeCursor;                  // Handle to the cursor displayed for the size icon.
  841. BOOL m_bTrackingSize;                   // TRUE if control in tracking mode.
  842. BOOL m_bShowActiveItemOnTop;            // TRUE to show active item on top
  843. BOOL m_bAllowFreeResize;                // TRUE to allow resize gripper by pixel;
  844. BOOL m_bAllowCollapse;                  // TRUE to allow collapse items.
  845. BOOL m_bShowGripper;                    // TRUE to show gripper.
  846. CXTPShortcutBarItem* m_pHotItem;        // Pointer to hot item.
  847. CXTPShortcutBarItem* m_pSelectedItem;   // Pointer to selected item.
  848. CXTPShortcutBarItem* m_pPressedItem;    // Pointer to pressed item.
  849. BOOL m_bClientPaneVisible;              // TRUE is client Pane in ShortcutBar is visible
  850. HCURSOR m_hHandCursor;                  // Hand cursor that is displayed when the cursor is positioned over a shortcut bar item.
  851. BOOL m_bSingleSelection;                // TRUE to use single selected items.
  852. CXTPToolTipContext* m_pToolTipContext;  // Tooltip Context.
  853. BOOL m_bPreSubclassWindow;              // True if PreSubclassWindow was called
  854. friend class CXTPShortcutBarItem;
  855. friend class CShortcutBarCtrl;
  856. };
  857. //////////////////////////////////////////////////////////////////////
  858. AFX_INLINE CString CXTPShortcutBarItem::GetCaption() const{
  859. return m_strCaption;
  860. }
  861. AFX_INLINE CString CXTPShortcutBarItem::GetTooltip() const{
  862. return m_strTooltip;
  863. }
  864. AFX_INLINE BOOL CXTPShortcutBarItem::IsItemExpandButton() const{
  865. return m_bExpandButton;
  866. }
  867. AFX_INLINE BOOL CXTPShortcutBarItem::IsExpanded() const {
  868. return m_bExpanded;
  869. }
  870. AFX_INLINE CXTPShortcutBar* CXTPShortcutBarItem::GetShortcutBar() const {
  871. return m_pShortcutBar;
  872. }
  873. AFX_INLINE CRect CXTPShortcutBarItem::GetItemRect() const {
  874. return m_rcItem;
  875. }
  876. AFX_INLINE void CXTPShortcutBarItem::SetItemData(DWORD_PTR dwData) {
  877. m_dwData = dwData;
  878. }
  879. AFX_INLINE DWORD_PTR CXTPShortcutBarItem::GetItemData() const {
  880. return m_dwData;
  881. }
  882. AFX_INLINE CWnd* CXTPShortcutBarItem::GetClientWindow() const {
  883. return CWnd::FromHandle(m_hwndChild);
  884. }
  885. AFX_INLINE CXTPShortcutBarItem* CXTPShortcutBar::GetHotItem() const {
  886. return m_pHotItem;
  887. }
  888. AFX_INLINE CXTPShortcutBarItem* CXTPShortcutBar::GetSelectedItem() const {
  889. return m_pSelectedItem;
  890. }
  891. AFX_INLINE CXTPShortcutBarItem* CXTPShortcutBar::GetPressedItem() const {
  892. return m_pPressedItem;
  893. }
  894. AFX_INLINE CRect CXTPShortcutBar::GetGripperRect() const {
  895. return m_rcGripper;
  896. }
  897. AFX_INLINE CSize CXTPShortcutBar::GetItemSize() const {
  898. return m_szItem;
  899. }
  900. AFX_INLINE void CXTPShortcutBar::SetItemSize(CSize szItem) {
  901. m_szItem = szItem;
  902. }
  903. AFX_INLINE int CXTPShortcutBar::GetExpandedLinesCount() const{
  904. return m_nExpandedLines;
  905. }
  906. AFX_INLINE BOOL CXTPShortcutBar::IsClientPaneVisible() const{
  907. return m_bClientPaneVisible;
  908. }
  909. AFX_INLINE void CXTPShortcutBar::SetClientPaneVisible(BOOL bVisible) {
  910. m_bClientPaneVisible = bVisible;
  911. Reposition();
  912. }
  913. AFX_INLINE CXTPShortcutBarPaintManager* CXTPShortcutBar::GetPaintManager() const{
  914. return m_pPaintManager;
  915. }
  916. AFX_INLINE void CXTPShortcutBar::SetMinimumClientHeight(int nMinHeight) {
  917. m_nMinClientHeight = nMinHeight;
  918. }
  919. AFX_INLINE XTPShortcutBarPaintTheme CXTPShortcutBar::GetCurrentTheme() const{
  920. return m_paintTheme;
  921. }
  922. AFX_INLINE BOOL CXTPShortcutBar::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) {
  923. return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
  924. }
  925. AFX_INLINE void CXTPShortcutBar::AllowGripperResize(BOOL bAllowResize) {
  926. m_bAllowResize = bAllowResize;
  927. }
  928. AFX_INLINE void CXTPShortcutBar::SetSingleSelection(BOOL bSingleSelection) {
  929. m_bSingleSelection = bSingleSelection;
  930. Reposition();
  931. }
  932. AFX_INLINE BOOL CXTPShortcutBar::IsSingleSelection() const{
  933. return m_bSingleSelection;
  934. }
  935. AFX_INLINE void CXTPShortcutBar::ShowActiveItemOnTop(BOOL bActiveItemOnTop) {
  936. m_bShowActiveItemOnTop = bActiveItemOnTop;
  937. Reposition();
  938. }
  939. AFX_INLINE BOOL CXTPShortcutBar::IsShowActiveItemOnTop() const {
  940. return m_bShowActiveItemOnTop;
  941. }
  942. AFX_INLINE void CXTPShortcutBar::AllowFreeResize(BOOL bAllowFreeResize) {
  943. m_bAllowFreeResize = bAllowFreeResize;
  944. Reposition();
  945. }
  946. AFX_INLINE BOOL CXTPShortcutBar::IsAllowFreeResize() const {
  947. return m_bAllowFreeResize;
  948. }
  949. AFX_INLINE void CXTPShortcutBar::AllowCollapse(BOOL bAllowCollapse) {
  950. m_bAllowCollapse = bAllowCollapse;
  951. Reposition();
  952. }
  953. AFX_INLINE void CXTPShortcutBar::ShowGripper(BOOL bShowGripper) {
  954. m_bShowGripper = bShowGripper;
  955. Reposition();
  956. }
  957. AFX_INLINE int CXTPShortcutBar::GetExpandedLinesHeight() const {
  958. return m_nDesiredExpandedLinesHeight;
  959. }
  960. AFX_INLINE CRect CXTPShortcutBar::GetClientPaneRect() const {
  961. return m_rcClient;
  962. }
  963. #endif // !defined(__XTPSHORTCUTBAR_H__)