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

对话框与窗口

开发平台:

Visual C++

  1. // XTPControl.h : interface for the CXTPControl 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(__XTPCONTROL_H__)
  22. #define __XTPCONTROL_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. #include "Common/XTPSystemHelpers.h"
  28. #include "XTPCommandBarsDefines.h"
  29. class CXTPControl;
  30. class CXTPControls;
  31. class CXTPCommandBar;
  32. class CXTPImageManager;
  33. class CXTPImageManagerIcon;
  34. class CXTPPaintManager;
  35. class CXTPPropExchange;
  36. class CXTPRibbonGroup;
  37. class CXTPCommandBarList;
  38. class CXTPCommandBars;
  39. struct XTP_COMMANDBARS_PROPEXCHANGE_PARAM;
  40. class CXTPControlActions;
  41. //===========================================================================
  42. // Summary:
  43. //     CXTPControlAction is a CCmdTarget derived class. It represents the single action of controls.
  44. //===========================================================================
  45. class _XTP_EXT_CLASS CXTPControlAction : public CXTPCmdTarget
  46. {
  47. DECLARE_DYNAMIC(CXTPControlAction)
  48. protected:
  49. //-----------------------------------------------------------------------
  50. // Summary:
  51. //     Constructs a CXTPControlAction object
  52. // Parameters:
  53. //     pActions - Owner actions collection.
  54. //-----------------------------------------------------------------------
  55. CXTPControlAction(CXTPControlActions* pActions);
  56. //-----------------------------------------------------------------------
  57. // Summary:
  58. //     Destroys a CXTPControlAction object, handles cleanup and deallocation
  59. //-----------------------------------------------------------------------
  60. ~CXTPControlAction();
  61. public:
  62. //-----------------------------------------------------------------------
  63. // Summary:
  64. //     Call this member to set the caption of the action.
  65. // Parameters:
  66. //     lpszCaption - Caption to be set.
  67. //     nIDCaption - Caption resource identifier.
  68. // See Also: SetPrompt, SetDescription, SetTooltip
  69. //-----------------------------------------------------------------------
  70. void SetCaption(LPCTSTR lpszCaption);
  71. void SetCaption(UINT nIDCaption);// <combine CXTPControl::SetCaption@LPCTSTR>
  72. //-----------------------------------------------------------------------
  73. // Summary:
  74. //     Call this member to get the action's identifier.
  75. // Returns:
  76. //     The identifier of the control.
  77. //-----------------------------------------------------------------------
  78. int GetID() const;
  79. //-----------------------------------------------------------------------
  80. // Summary:
  81. //     Call this member to get the action's caption.
  82. // Returns:
  83. //     The caption of the control.
  84. //-----------------------------------------------------------------------
  85. CString GetCaption() const;
  86. //-----------------------------------------------------------------------
  87. // Summary:
  88. //     Call this member to set the description of the action.
  89. // Parameters:
  90. //     lpszDescription - Description to be set.
  91. // See Also: SetCaption, SetPrompt, SetTooltip
  92. //-----------------------------------------------------------------------
  93. void SetDescription(LPCTSTR lpszDescription);
  94. //----------------------------------------------------------------------
  95. // Summary:
  96. //     Call this member to load a string from a STRINGTABLE resource
  97. //     to set the tooltip and description of a action.
  98. // Parameters:
  99. //     lpszPrompt -  String from resource file that contains the
  100. //                  tooltip and description of the item.  The Caption
  101. //                  will be set to use the tooltip text.  The tooltip
  102. //                  and description must be separated by "n" if both
  103. //                  are included.  You can omit the description and
  104. //                  both the tooltip and description will be set to
  105. //                  the same value.
  106. // Remarks:
  107. //     Resource strings are in the format "DescriptionnToolTip".
  108. //
  109. //     Note: The caption is set to the value of the tooltip when this
  110. //           member is called.
  111. // See Also: SetCaption, SetDescription, SetTooltip
  112. //----------------------------------------------------------------------
  113. void SetPrompt(LPCTSTR lpszPrompt);
  114. //-----------------------------------------------------------------------
  115. // Summary:
  116. //     Call this member to get the action's description.
  117. // Returns:
  118. //     The description of the control.
  119. //-----------------------------------------------------------------------
  120. CString GetDescription() const;
  121. //-----------------------------------------------------------------------
  122. // Summary:
  123. //     Call this member to set the action icon's identifier.
  124. // Parameters:
  125. //     nId - Icon's identifier to be set.
  126. //-----------------------------------------------------------------------
  127. void SetIconId(int nId);
  128. //-----------------------------------------------------------------------
  129. // Summary:
  130. //     Call this member to get the icon's identifier.
  131. // Returns:
  132. //     An icon's identifier of the action.
  133. //-----------------------------------------------------------------------
  134. int GetIconId() const;
  135. //-----------------------------------------------------------------------
  136. // Summary:
  137. //     Call this member to set the action help identifier.
  138. // Parameters:
  139. //     nId - Help identifier to be set.
  140. //-----------------------------------------------------------------------
  141. void SetHelpId(int nId);
  142. //-----------------------------------------------------------------------
  143. // Summary:
  144. //     Call this member to get the help identifier.
  145. // Returns:
  146. //     Help identifier of the action.
  147. //-----------------------------------------------------------------------
  148. int GetHelpId() const;
  149. //-----------------------------------------------------------------------
  150. // Summary:
  151. //     Call this member to enable or disable the action.
  152. // Parameters:
  153. //     bEnabled - TRUE if the action is enabled.
  154. // See Also: GetEnabled, SetChecked
  155. //-----------------------------------------------------------------------
  156. void SetEnabled(BOOL bEnabled);
  157. //-----------------------------------------------------------------------
  158. // Summary:
  159. //     Call this member to get the state of the action.
  160. // Returns:
  161. //     TRUE if the action is enabled; otherwise FALSE.
  162. //-----------------------------------------------------------------------
  163. BOOL GetEnabled() const;
  164. //-----------------------------------------------------------------------
  165. // Summary:
  166. //     Call this member to check the action.
  167. // Parameters:
  168. //     bChecked - TRUE if the action is checked.
  169. // See Also: GetChecked, SetEnabled
  170. //-----------------------------------------------------------------------
  171. void SetChecked(BOOL bChecked);
  172. //-----------------------------------------------------------------------
  173. // Summary:
  174. //     Call this member to get the state of the action.
  175. // Returns:
  176. //     TRUE if the action is checked; otherwise FALSE.
  177. //-----------------------------------------------------------------------
  178. BOOL GetChecked() const;
  179. //-----------------------------------------------------------------------
  180. // Summary:
  181. //     Call this member to determine if the action is visible.
  182. // Returns:
  183. //     TRUE if the action is visible.
  184. //-----------------------------------------------------------------------
  185. BOOL IsVisible() const;
  186. //-----------------------------------------------------------------------
  187. // Summary:
  188. //     Call this member to change the state of the action.
  189. // Parameters:
  190. //     bVisible - TRUE if the action is visible.
  191. //-----------------------------------------------------------------------
  192. void SetVisible(BOOL bVisible);
  193. //-----------------------------------------------------------------------
  194. // Summary:
  195. //     This method sets the 32-bit value associated with the action
  196. // Parameters:
  197. //     dwTag - Contains the new value to associate with the action.
  198. //-----------------------------------------------------------------------
  199. void SetTag(DWORD_PTR dwTag);
  200. //-----------------------------------------------------------------------
  201. // Summary:
  202. //     This method retrieves the application-supplied 32-bit value
  203. //     associated with the action.
  204. // Returns:
  205. //     The 32-bit value associated with the action.
  206. //-----------------------------------------------------------------------
  207. DWORD_PTR GetTag() const;
  208. //----------------------------------------------------------------------
  209. // Summary:
  210. //     Call this method to set the category of the action.
  211. // Parameters:
  212. //     lpszCategory - Category of the action.
  213. //----------------------------------------------------------------------
  214. void SetCategory(LPCTSTR lpszCategory);
  215. //----------------------------------------------------------------------
  216. // Summary:
  217. //     Call this method to retrieve the category of the action.
  218. // Returns:
  219. //     Category of the action.
  220. //----------------------------------------------------------------------
  221. CString GetCategory() const;
  222. //-----------------------------------------------------------------------
  223. // Summary:
  224. //     Call this member to set the tooltip of the action.
  225. // Parameters:
  226. //     lpszTooltip - Tooltip to be set.
  227. // See Also: SetCaption, SetDescription, SetPrompt
  228. //-----------------------------------------------------------------------
  229. void SetTooltip(LPCTSTR lpszTooltip);
  230. //-----------------------------------------------------------------------
  231. // Summary:
  232. //     Call this member to get the action's tooltip.
  233. // Returns:
  234. //     Tooltip of the control.
  235. //-----------------------------------------------------------------------
  236. CString GetTooltip() const;
  237. //-----------------------------------------------------------------------
  238. // Summary:
  239. //     Call this member to set the shortcut string to the action.
  240. // Parameters:
  241. //     lpszShortcutText - Shortcut to be set.
  242. //-----------------------------------------------------------------------
  243. void SetShortcutText(LPCTSTR lpszShortcutText);
  244. //-----------------------------------------------------------------------
  245. // Summary:
  246. //     Call this member to get the action's shortcut.
  247. // Returns:
  248. //     The shortcut of the control.
  249. //-----------------------------------------------------------------------
  250. CString GetShortcutText() const;
  251. //-----------------------------------------------------------------------
  252. // Summary:
  253. //     Call this member to set the keyboard tip to the action.
  254. // Parameters:
  255. //     lpszKeyboardTip - Keyboard tip to be set.
  256. //-----------------------------------------------------------------------
  257. void SetKeyboardTip(LPCTSTR lpszKeyboardTip);
  258. //-----------------------------------------------------------------------
  259. // Summary:
  260. //     Call this member to get the action's keyboard tip.
  261. // Returns:
  262. //     The  keyboard tip of the control.
  263. //-----------------------------------------------------------------------
  264. CString GetKeyboardTip() const;
  265. //-----------------------------------------------------------------------
  266. // Summary:
  267. //     Call this member to set grayed-out text displayed in the edit and combo controls
  268. //     that displayed a helpful description of what the control is used for.
  269. // Parameters:
  270. //     lpszEditHint - Edit hint to be set
  271. //-----------------------------------------------------------------------
  272. void SetEditHint(LPCTSTR lpszEditHint);
  273. //-----------------------------------------------------------------------
  274. // Summary:
  275. //     Call this member to get grayed-out text displayed in the edit and combo controls
  276. //     that displayed a helpful description of what the control is used for.
  277. // Returns:
  278. //     Edit hint of the control
  279. //-----------------------------------------------------------------------
  280. CString GetEditHint() const;
  281. void SetKey(LPCTSTR lpszKey);
  282. CString GetKey() const;
  283. //-----------------------------------------------------------------------
  284. // Summary:
  285. //     Call this member to get pointer to owner CommandBars
  286. // Returns:
  287. //     The pointer to CXTPCommandBars object
  288. //-----------------------------------------------------------------------
  289. CXTPCommandBars* GetCommandBars() const;
  290. public:
  291. //-----------------------------------------------------------------------
  292. // Summary:
  293. //     Call this member to get control associated with action
  294. // Parameters:
  295. //     nIndex - Index of control to retrieve
  296. // Returns:
  297. //     The pointer to CXTPCommandBars object
  298. //-----------------------------------------------------------------------
  299. CXTPControl* GetControl(int nIndex) const;
  300. //-----------------------------------------------------------------------
  301. // Summary:
  302. //     Call this member to get number of controls associated with the action
  303. // Returns:
  304. //     Total number of controls associated with action
  305. //-----------------------------------------------------------------------
  306. int GetCount() const;
  307. public:
  308. //-----------------------------------------------------------------------
  309. // Summary:
  310. //     Call this member to redraw all controls associated with actions
  311. //-----------------------------------------------------------------------
  312. void RedrawControls();
  313. //-----------------------------------------------------------------------
  314. // Summary:
  315. //     Call this member to reposition all controls associated with actions
  316. //-----------------------------------------------------------------------
  317. void RepositionControls();
  318. public:
  319. //-----------------------------------------------------------------------
  320. // Summary:
  321. //     Reads or writes this object from or to an archive.
  322. // Parameters:
  323. //     pPX - A CXTPPropExchange object to serialize to or from.
  324. //----------------------------------------------------------------------
  325. void DoPropExchange(CXTPPropExchange* pPX);
  326. protected:
  327. //-----------------------------------------------------------------------
  328. // Summary:
  329. //     This method is called when new control attached to the Action
  330. // Parameters:
  331. //     pControl - Control to be attached
  332. // See Also: RemoveControl
  333. //-----------------------------------------------------------------------
  334. void AddControl(CXTPControl* pControl);
  335. //-----------------------------------------------------------------------
  336. // Summary:
  337. //     This method is called to remove control from actions list
  338. // Parameters:
  339. //     pControl - Control to be removed
  340. // See Also: AddControl
  341. //-----------------------------------------------------------------------
  342. void RemoveControl(CXTPControl* pControl);
  343. //-------------------------------------------------------------------------
  344. // Summary:
  345. //     This method called before action removed
  346. //-------------------------------------------------------------------------
  347. void OnRemoved();
  348. //-----------------------------------------------------------------------
  349. // Summary:
  350. //     This method is called when property of action was changed
  351. // Parameters:
  352. //     nProperty - Property identifier
  353. // See Also: OnChanging
  354. //-----------------------------------------------------------------------
  355. void OnChanged(int nProperty);
  356. //-----------------------------------------------------------------------
  357. // Summary:
  358. //     This method is called when property of action is about to be changed
  359. // Parameters:
  360. //     nProperty - Property identifier
  361. // See Also:OnChanged
  362. //-----------------------------------------------------------------------
  363. void OnChanging(int nProperty);
  364. public:
  365. CCmdTarget* m_pTarget;          // Parameter of action
  366. protected:
  367. DWORD_PTR m_nTag;               // Action tag.
  368. int m_nId;                      // Identifier of the action.
  369. int m_nIconId;                  // Identifier of the action's image.
  370. int m_nHelpId;                  // Help identifier
  371. BOOL m_bEnabled;                // TRUE if the action is enabled.
  372. BOOL m_bChecked;                // TRUE if the action is checked.
  373. BOOL m_bVisible;                // TRUE if action is visible
  374. CString m_strCaption;           // Caption of the action.
  375. CString m_strTooltipText;       // Tooltip text.
  376. CString m_strDescriptionText;   // Description text.
  377. CString m_strCategory;          // Category of the action.
  378. CString m_strShortcutText;      // Shortcut text
  379. CString m_strEditHint;          // Edit Hint for Combo and Edit Controls
  380. CString m_strKeyboardTip;       // Keyboard tip
  381. CString m_strKey;               // Key
  382. CArray<CXTPControl*, CXTPControl*> m_arrControls;   // Associated controls
  383. CXTPControlActions* m_pActions; // Parent actions object
  384. private:
  385. friend class CXTPControl;
  386. friend class CXTPControls;
  387. friend class CXTPControlActions;
  388. };
  389. AFX_INLINE void CXTPControlAction::SetShortcutText(LPCTSTR lpszShortcutText) {
  390. m_strShortcutText = lpszShortcutText;
  391. }
  392. AFX_INLINE CString CXTPControlAction::GetShortcutText() const {
  393. return m_strShortcutText;
  394. }
  395. AFX_INLINE void CXTPControlAction::SetDescription(LPCTSTR lpszDescription) {
  396. m_strDescriptionText = lpszDescription;
  397. }
  398. AFX_INLINE CString CXTPControlAction::GetDescription() const {
  399. return m_strDescriptionText;
  400. }
  401. AFX_INLINE CString CXTPControlAction::GetTooltip() const {
  402. return m_strTooltipText;
  403. }
  404. AFX_INLINE void CXTPControlAction::SetTooltip(LPCTSTR lpszTooltip) {
  405. m_strTooltipText = lpszTooltip;
  406. }
  407. AFX_INLINE CString CXTPControlAction::GetKey() const {
  408. return m_strKey;
  409. }
  410. AFX_INLINE void CXTPControlAction::SetKey(LPCTSTR lpszKey) {
  411. m_strKey = lpszKey;
  412. }
  413. AFX_INLINE CString CXTPControlAction::GetCaption() const {
  414. return m_strCaption.IsEmpty() ? m_strTooltipText : m_strCaption;
  415. }
  416. AFX_INLINE CString CXTPControlAction::GetEditHint() const {
  417. return m_strEditHint;
  418. }
  419. AFX_INLINE int CXTPControlAction::GetID () const {
  420. return m_nId;
  421. }
  422. AFX_INLINE void CXTPControlAction::SetIconId(int nId) {
  423. if (m_nIconId != nId) {m_nIconId = nId; RedrawControls();}
  424. }
  425. AFX_INLINE int CXTPControlAction::GetIconId() const {
  426. return m_nIconId <= 0 ? m_nId : m_nIconId;
  427. }
  428. AFX_INLINE void CXTPControlAction::SetHelpId(int nId) {
  429. m_nHelpId = nId;
  430. }
  431. AFX_INLINE int CXTPControlAction::GetHelpId() const {
  432. return m_nHelpId <= 0 ? m_nId : m_nHelpId;
  433. }
  434. AFX_INLINE void CXTPControlAction::SetEnabled(BOOL bEnabled) {
  435. if (m_bEnabled != bEnabled) {m_bEnabled = bEnabled; OnChanged(0); RedrawControls();}
  436. }
  437. AFX_INLINE BOOL CXTPControlAction::GetChecked() const {
  438. return m_bChecked;
  439. }
  440. AFX_INLINE void CXTPControlAction::SetChecked(BOOL bChecked) {
  441. if (m_bChecked != bChecked) {m_bChecked = bChecked; OnChanged(1); RedrawControls();}
  442. }
  443. AFX_INLINE BOOL CXTPControlAction::IsVisible() const {
  444. return m_bVisible;
  445. }
  446. AFX_INLINE void CXTPControlAction::SetVisible(BOOL bVisible) {
  447. if (m_bVisible != bVisible) { m_bVisible = bVisible; OnChanged(2); RepositionControls();}
  448. }
  449. AFX_INLINE void CXTPControlAction::SetCategory(LPCTSTR lpszCategory) {
  450. m_strCategory = lpszCategory;
  451. }
  452. AFX_INLINE CString CXTPControlAction::GetCategory() const {
  453. return m_strCategory;
  454. }
  455. AFX_INLINE void CXTPControlAction::SetTag(DWORD_PTR dwTag) {
  456. m_nTag = dwTag;
  457. }
  458. AFX_INLINE DWORD_PTR CXTPControlAction::GetTag() const {
  459. return m_nTag;
  460. }
  461. AFX_INLINE void CXTPControlAction::SetKeyboardTip(LPCTSTR lpszKeyboardTip) {
  462. m_strKeyboardTip = lpszKeyboardTip;
  463. }
  464. AFX_INLINE CString CXTPControlAction::GetKeyboardTip() const {
  465. return m_strKeyboardTip;
  466. }
  467. //===========================================================================
  468. // Summary:
  469. //     CXTPControlActions is a CCmdTarget derived class. It represents a collection
  470. //     of the actions.
  471. //===========================================================================
  472. class _XTP_EXT_CLASS CXTPControlActions : public CXTPCmdTarget
  473. {
  474. protected:
  475. //-----------------------------------------------------------------------
  476. // Summary:
  477. //     Constructs a CXTPControlActions object
  478. // Parameters:
  479. //     pCommandBars - Parent commandbars object
  480. //-----------------------------------------------------------------------
  481. CXTPControlActions(CXTPCommandBars* pCommandBars);
  482. //-----------------------------------------------------------------------
  483. // Summary:
  484. //     Destroys a CXTPControlActions object, handles cleanup and deallocation
  485. //-----------------------------------------------------------------------
  486. ~CXTPControlActions();
  487. public:
  488. //-----------------------------------------------------------------------
  489. // Summary:
  490. //     Call this member to return the action at the specified index.
  491. // Parameters:
  492. //     nIndex - An integer index.
  493. // Returns:
  494. //     The CXTPControlAction pointer currently at this index.
  495. //-----------------------------------------------------------------------
  496. CXTPControlAction* GetAt(int nIndex) const;
  497. //-----------------------------------------------------------------------
  498. // Summary:
  499. //     Call this member to get the count of the actions
  500. // Returns:
  501. //     The count of the actions.
  502. //-----------------------------------------------------------------------
  503. int GetCount() const;
  504. //-----------------------------------------------------------------------
  505. // Summary:
  506. //     Call this member to find the specified action.
  507. // Parameters:
  508. //     nId        - The action's identifier.
  509. // Returns:
  510. //     Pointer to the CXTPControlAction object if successful; otherwise returns NULL.
  511. //-----------------------------------------------------------------------
  512. CXTPControlAction* FindAction(int nId) const;
  513. //-----------------------------------------------------------------------
  514. // Summary:
  515. //     Call this member to add a new action.
  516. // Parameters:
  517. //     nId        - Identifier of the control to be added.
  518. //     pAction    - Action to add
  519. // Returns:
  520. //     A pointer to the added action.
  521. //-----------------------------------------------------------------------
  522. CXTPControlAction* Add(int nId);
  523. CXTPControlAction* Add(int nId, CXTPControlAction* pAction); // <combine CXTPControlActions::Add@int>
  524. //-----------------------------------------------------------------------
  525. // Summary:
  526. //     Reads or writes this object from or to an archive.
  527. // Parameters:
  528. //     pPX - A CXTPPropExchange object to serialize to or from.
  529. //----------------------------------------------------------------------
  530. void DoPropExchange(CXTPPropExchange* pPX);
  531. //-----------------------------------------------------------------------
  532. // Summary:
  533. //     Call this member to remove all actions.
  534. //-----------------------------------------------------------------------
  535. void RemoveAll();
  536. void Remove(int nId);
  537. //-----------------------------------------------------------------------
  538. // Summary:
  539. //     Call this method to create actions using menu commands
  540. // Parameters:
  541. //     pMenu - Menu pointer to convert from
  542. //-----------------------------------------------------------------------
  543. void CreateFromMenu(CMenu* pMenu);
  544. protected:
  545. protected:
  546. void Insert(CXTPControlAction* pAction);
  547. void SetActionId(CXTPControlAction* pAction, int nId);
  548. protected:
  549. CArray<CXTPControlAction*, CXTPControlAction*> m_arrActions;    // Actions array
  550. CXTPCommandBars* m_pCommandBars;        // Parent CommandBars object
  551. friend class CXTPCommandBars;
  552. friend class CXTPControlAction;
  553. };
  554. //===========================================================================
  555. // Summary:
  556. //     CXTPControl is a CCmdTarget derived class. It represents the parent
  557. //     class for the command bar's controls.
  558. //===========================================================================
  559. class _XTP_EXT_CLASS CXTPControl : public CXTPCmdTarget, public CXTPAccessible
  560. {
  561. private:
  562. class CDocTemplateMap : public CMap<UINT, UINT, BOOL, BOOL>
  563. {
  564. public:
  565. void Copy(CDocTemplateMap& map);
  566. };
  567. protected:
  568. //-----------------------------------------------------------------------
  569. // Summary:
  570. //     Constructs a CXTPControl object
  571. //-----------------------------------------------------------------------
  572. CXTPControl();
  573. //-----------------------------------------------------------------------
  574. // Summary:
  575. //     Destroys a CXTPControl object, handles cleanup and deallocation
  576. //-----------------------------------------------------------------------
  577. virtual ~CXTPControl();
  578. public:
  579. //-----------------------------------------------------------------------
  580. // Summary:
  581. //     Call this member to set the style of the control.
  582. // Parameters:
  583. //     buttonStyle - The style to be set. Can be any of the values listed in the Remarks section.
  584. // Remarks:
  585. //     buttonStyle parameter can be one of the following:
  586. //         * <b>xtpButtonAutomatic</b> Indicates the default style.
  587. //         * <b>xtpButtonCaption</b> Indicates caption drawing only.
  588. //         * <b>xtpButtonIcon</b> Indicates icon drawing only.
  589. //         * <b>xtpButtonIconAndCaption</b> Indicates icon and caption drawing.
  590. //-----------------------------------------------------------------------
  591. void SetStyle(XTPButtonStyle buttonStyle);
  592. //-----------------------------------------------------------------------
  593. // Summary:
  594. //     Call this member to get the control's style.
  595. // Returns:
  596. //     The style of the control.
  597. //-----------------------------------------------------------------------
  598. XTPButtonStyle GetStyle()  const;
  599. public:
  600. //-----------------------------------------------------------------------
  601. // Summary:
  602. //     Call this member to set the caption of the control.
  603. // Parameters:
  604. //     lpszCaption - Caption to be set.
  605. //     nIDCaption - Caption resource identifier.
  606. // See Also: SetPrompt, SetDescription, SetTooltip
  607. //-----------------------------------------------------------------------
  608. void SetCaption(LPCTSTR lpszCaption);
  609. void SetCaption(UINT nIDCaption);// <combine CXTPControl::SetCaption@LPCTSTR>
  610. //-----------------------------------------------------------------------
  611. // Summary:
  612. //     Call this member to get the control's caption.
  613. // Returns:
  614. //     The caption of the control.
  615. //-----------------------------------------------------------------------
  616. virtual CString GetCaption() const;
  617. //-----------------------------------------------------------------------
  618. // Summary:
  619. //     Call this member to set the shortcut string to the control.
  620. // Parameters:
  621. //     lpszShortcutText - Shortcut to be set.
  622. //-----------------------------------------------------------------------
  623. void SetShortcutText(LPCTSTR lpszShortcutText);
  624. //-----------------------------------------------------------------------
  625. // Summary:
  626. //     Call this member to get the control's shortcut.
  627. // Returns:
  628. //     The shortcut of the control.
  629. //-----------------------------------------------------------------------
  630. CString GetShortcutText() const;
  631. //-----------------------------------------------------------------------
  632. // Summary:
  633. //     Call this member to set the description of the control.
  634. // Parameters:
  635. //     lpszDescription - Description to be set.
  636. // See Also: SetCaption, SetPrompt, SetTooltip
  637. //-----------------------------------------------------------------------
  638. void SetDescription(LPCTSTR lpszDescription);
  639. //-----------------------------------------------------------------------
  640. // Summary:
  641. //     Call this member to get the control's description.
  642. // Returns:
  643. //     The description of the control.
  644. //-----------------------------------------------------------------------
  645. virtual CString GetDescription() const;
  646. //-----------------------------------------------------------------------
  647. // Summary:
  648. //     Call this member to set the tooltip of the control.
  649. // Parameters:
  650. //     lpszTooltip - Tooltip to be set.
  651. // See Also: SetCaption, SetDescription, SetPrompt
  652. //-----------------------------------------------------------------------
  653. void SetTooltip(LPCTSTR lpszTooltip);
  654. //-----------------------------------------------------------------------
  655. // Summary:
  656. //     Call this member to get the control's tooltip.
  657. // Returns:
  658. //     Tooltip of the control.
  659. //-----------------------------------------------------------------------
  660. virtual CString GetTooltip() const;
  661. //-----------------------------------------------------------------------
  662. // Summary:
  663. //     Call this member to set the keyboard tip to the control.
  664. // Parameters:
  665. //     lpszKeyboardTip - Keyboard tip to be set.
  666. //-----------------------------------------------------------------------
  667. void SetKeyboardTip(LPCTSTR lpszKeyboardTip);
  668. //-----------------------------------------------------------------------
  669. // Summary:
  670. //     Call this member to get the keyboard tip.
  671. // Returns:
  672. //     The  keyboard tip of the control.
  673. //-----------------------------------------------------------------------
  674. CString GetKeyboardTip() const;
  675. //-----------------------------------------------------------------------
  676. // Summary:
  677. //     Call this member to set the parameter of the control.
  678. // Parameters:
  679. //     lpszParameter - Parameter to be set.
  680. // Remarks:
  681. //     This method sets CString value associated with the control, use SetTag to set numeric parameter.
  682. // See Also: SetTag, GetParameter
  683. //-----------------------------------------------------------------------
  684. void SetParameter(LPCTSTR lpszParameter);
  685. //-----------------------------------------------------------------------
  686. // Summary:
  687. //     Call this member to get the control's parameter.
  688. // Returns:
  689. //     The parameter of the control.
  690. // See Also: GetTag, SetParameter
  691. //-----------------------------------------------------------------------
  692. CString GetParameter() const;
  693. //-----------------------------------------------------------------------
  694. // Summary:
  695. //     Call this member to set the identifier of the control.
  696. // Parameters:
  697. //     nId - Identifier to be set.
  698. //-----------------------------------------------------------------------
  699. void SetID(int nId);
  700. //-----------------------------------------------------------------------
  701. // Summary:
  702. //     Call this member to get the control's identifier.
  703. // Returns:
  704. //     The identifier of the control.
  705. //-----------------------------------------------------------------------
  706. int GetID() const;
  707. //-----------------------------------------------------------------------
  708. // Summary:
  709. //     Call this member to get the index of the control.
  710. // Returns:
  711. //     The index of the control.
  712. //-----------------------------------------------------------------------
  713. long GetIndex() const;
  714. //-----------------------------------------------------------------------
  715. // Summary:
  716. //     Call this member to set the control icon's identifier.
  717. // Parameters:
  718. //     nId - Icon's identifier to be set.
  719. //-----------------------------------------------------------------------
  720. void SetIconId(int nId);
  721. //-----------------------------------------------------------------------
  722. // Summary:
  723. //     Call this member to get the icon's identifier.
  724. // Returns:
  725. //     An icon's identifier of the control.
  726. //-----------------------------------------------------------------------
  727. int GetIconId() const;
  728. //-----------------------------------------------------------------------
  729. // Summary:
  730. //     Call this member to set the control help identifier.
  731. // Parameters:
  732. //     nId - Help identifier to be set.
  733. //-----------------------------------------------------------------------
  734. void SetHelpId(int nId);
  735. //-----------------------------------------------------------------------
  736. // Summary:
  737. //     Call this member to get the help identifier.
  738. // Returns:
  739. //     Help identifier of the control.
  740. //-----------------------------------------------------------------------
  741. int GetHelpId() const;
  742. //-----------------------------------------------------------------------
  743. // Summary:
  744. //     Call this member to begin a new group using a separator.
  745. // Parameters:
  746. //     bBeginGroup - TRUE if the control starts a new group.
  747. //-----------------------------------------------------------------------
  748. virtual void SetBeginGroup(BOOL bBeginGroup);
  749. //-----------------------------------------------------------------------
  750. // Summary:
  751. //     Call this member to determine if the control has a separator.
  752. // Returns:
  753. //     TRUE if the control starts a new group; otherwise FALSE.
  754. //-----------------------------------------------------------------------
  755. BOOL GetBeginGroup() const;
  756. //-----------------------------------------------------------------------
  757. // Summary:
  758. //     Call this member to enable or disable the control.
  759. //     If the control does not have xtpFlagManualUpdate flag, you must call
  760. //     the Enable member of CCmdUI in the ON_UPDATE_COMMAND_UI handler.
  761. // Parameters:
  762. //     bEnabled - TRUE if the control is enabled.
  763. // See Also: GetEnabled, SetChecked
  764. //-----------------------------------------------------------------------
  765. virtual void SetEnabled(BOOL bEnabled);
  766. //-----------------------------------------------------------------------
  767. // Summary:
  768. //     Call this member to get the state of the control.
  769. // Returns:
  770. //     TRUE if the control is enabled; otherwise FALSE.
  771. //-----------------------------------------------------------------------
  772. BOOL GetEnabled() const;
  773. //-----------------------------------------------------------------------
  774. // Summary:
  775. //     Call this member to check the control.
  776. //     If the control does not have xtpFlagManualUpdate flag, you must call
  777. //     the SetCheck member of CCmdUI in the ON_UPDATE_COMMAND_UI handler.
  778. // Parameters:
  779. //     bChecked - TRUE if the control is checked.
  780. // See Also: GetChecked, SetEnabled
  781. //-----------------------------------------------------------------------
  782. void SetChecked(BOOL bChecked);
  783. //-----------------------------------------------------------------------
  784. // Summary:
  785. //     Call this member to get the state of the control.
  786. // Returns:
  787. //     TRUE if the control is checked; otherwise FALSE.
  788. //-----------------------------------------------------------------------
  789. BOOL GetChecked() const;
  790. //-----------------------------------------------------------------------
  791. // Summary:
  792. //     Call this member to get the state of the control.
  793. // Returns:
  794. //     TRUE if the control is selected; otherwise FALSE.
  795. //-----------------------------------------------------------------------
  796. virtual int GetSelected() const;
  797. //-----------------------------------------------------------------------
  798. // Summary:
  799. //     Call this member to set focus to the control.
  800. // Parameters:
  801. //     bFocused - TRUE to set focus
  802. //-----------------------------------------------------------------------
  803. virtual void SetFocused(BOOL bFocused);
  804. //-----------------------------------------------------------------------
  805. // Summary:
  806. //     Call this member to get the focused state of the control.
  807. // Returns:
  808. //     TRUE if the control has focus; otherwise FALSE.
  809. //-----------------------------------------------------------------------
  810. virtual BOOL IsFocused() const;
  811. //-----------------------------------------------------------------------
  812. // Summary:
  813. //     Call this member to press the control.
  814. // Parameters:
  815. //     bPressed - TRUE if the control is pressed.
  816. //-----------------------------------------------------------------------
  817. void SetPressed(BOOL bPressed);
  818. //-----------------------------------------------------------------------
  819. // Summary:
  820. //     Call this member to get the state of the control.
  821. // Returns:
  822. //     TRUE if the control is pressed; otherwise FALSE.
  823. //-----------------------------------------------------------------------
  824. virtual BOOL GetPressed() const;
  825. //-----------------------------------------------------------------------
  826. // Summary:
  827. //     This member is called to set the bounding rectangle of the control.
  828. // Parameters:
  829. //     rcControl - Bounding rectangle of the control.
  830. //-----------------------------------------------------------------------
  831. virtual void SetRect(CRect rcControl);
  832. //-----------------------------------------------------------------------
  833. // Summary:
  834. //     Call this member to get the bounding rectangle of the control.
  835. // Returns:
  836. //     The bounding rectangle of the control.
  837. //-----------------------------------------------------------------------
  838. CRect GetRect() const;
  839. //-----------------------------------------------------------------------
  840. // Summary:
  841. //     Call this member to get the parent command bar.
  842. // Returns:
  843. //     The parent command bar object.
  844. //-----------------------------------------------------------------------
  845. CXTPCommandBar* GetParent() const;
  846. //-----------------------------------------------------------------------
  847. // Summary:
  848. //     Call this member to determine if the control is visible.
  849. // Parameters:
  850. //     dwSkipFlags - combination of XTPControlHideFlags that can be ignored
  851. // Returns:
  852. //     TRUE if the control is visible.
  853. // See Also: XTPControlHideFlags, GetHideFlags
  854. //-----------------------------------------------------------------------
  855. virtual BOOL IsVisible(DWORD dwSkipFlags = 0) const;
  856. //-----------------------------------------------------------------------
  857. // Summary:
  858. //     Call this member to determine if the caption of the control is visible
  859. // Returns:
  860. //     TRUE if the caption is visible.
  861. //-----------------------------------------------------------------------
  862. virtual BOOL IsCaptionVisible() const;
  863. //-----------------------------------------------------------------------
  864. // Summary:
  865. //     Call this member to change the state of the control.
  866. // Parameters:
  867. //     bVisible - TRUE if the control is visible.
  868. //-----------------------------------------------------------------------
  869. void SetVisible(BOOL bVisible);
  870. //-----------------------------------------------------------------------
  871. // Summary:
  872. //     Call this member to get the parent controls collection.
  873. // Returns:
  874. //     A CXTPControls pointer to the parent controls.
  875. //-----------------------------------------------------------------------
  876. CXTPControls* GetControls() const;
  877. //-----------------------------------------------------------------------
  878. // Summary:
  879. //     Call this member to get the control's type
  880. // Returns:
  881. //     The type of the control. It can be one of the following:
  882. //         * <b>xtpControlButton</b> Indicates the control is simple button (CXTPControlButton)
  883. //         * <b>xtpControlPopup</b> Indicates the control is simple popup button. (CXTPControlPopup)
  884. //         * <b>xtpControlButtonPopup</b> Indicates the control is popup button with icon (CXTPControlPopup)
  885. //         * <b>xtpControlSplitButtonPopup</b> Indicates the control is split button popup.(CXTPControlPopup)
  886. //         * <b>xtpControlComboBox</b> Indicates the control is combo box (CXTPControlComboBox)
  887. //         * <b>xtpControlEdit</b> Indicates the control is edit control (CXTPControlEdit)
  888. //         * <b>xtpControlLabel</b> Indicates the control is label (CXTPControlLabel)
  889. //-----------------------------------------------------------------------
  890. XTPControlType GetType() const;
  891. //-----------------------------------------------------------------------
  892. // Summary:
  893. //     Call this member to set the flags of the control.
  894. // Parameters:
  895. //     dwFlags - control flags.
  896. // Remarks:
  897. //     Flags to be added or removed can be combined by using the bitwise
  898. //     OR (|) operator. It can be one or more of the following:
  899. //         * <b>xtpFlagRightAlign</b> Indicates the control is right aligned.
  900. //         * <b>xtpFlagSkipFocus</b> Indicates the control does not have focus.
  901. //         * <b>xtpFlagLeftPopup</b> Indicates the child bar should pop-up on the left.
  902. //         * <b>xtpFlagManualUpdate</b> Indicates the control is manually updated.
  903. //         * <b>xtpFlagNoMovable</b> Indicates the control's customization is disabled.
  904. //         * <b>xtpFlagControlStretched</b> Indicates the control is stretched in the parent command bar.
  905. // See Also: GetFlags, XTPControlFlags
  906. //-----------------------------------------------------------------------
  907. void SetFlags(DWORD dwFlags);
  908. //----------------------------------------------------------------------
  909. // Summary:
  910. //     Call this member to retrieve control special flags.
  911. // Returns:
  912. //     Controls special flags.
  913. // See Also: SetFlags, XTPControlFlags
  914. //----------------------------------------------------------------------
  915. DWORD GetFlags() const;
  916. //-----------------------------------------------------------------------
  917. // Summary:
  918. //     This method sets the 32-bit value associated with the control.
  919. // Parameters:
  920. //     dwTag - Contains the new value to associate with the control.
  921. //-----------------------------------------------------------------------
  922. void SetTag(DWORD_PTR dwTag);
  923. //-----------------------------------------------------------------------
  924. // Summary:
  925. //     This method retrieves the application-supplied 32-bit value
  926. //     associated with the control.
  927. // Returns:
  928. //     The 32-bit value associated with the control.
  929. //-----------------------------------------------------------------------
  930. DWORD_PTR GetTag() const;
  931. //-----------------------------------------------------------------------
  932. // Summary:
  933. //     Call this member to compare controls.
  934. // Parameters:
  935. //     pOther - The control need compare with.
  936. // Returns:
  937. //     TRUE if the controls are identical.
  938. //-----------------------------------------------------------------------
  939. virtual BOOL Compare(CXTPControl* pOther);
  940. //-----------------------------------------------------------------------
  941. // Summary:
  942. //     Call this member to get the child command bar.
  943. // Returns:
  944. //     A pointer to the child command bar.
  945. //-----------------------------------------------------------------------
  946. virtual CXTPCommandBar* GetCommandBar() const;
  947. //----------------------------------------------------------------------
  948. // Summary:
  949. //     Call this member function to enable or disable closing of the
  950. //     sub menus when a control is clicked in the menu.
  951. // Parameters:
  952. //     bCloseOnClick - TRUE if the sub menu will close when a control
  953. //                     is clicked, FALSE if the menu will remain open
  954. //                     after a control is clicked.
  955. // See Also: GetCloseSubMenuOnClick
  956. //----------------------------------------------------------------------
  957. void SetCloseSubMenuOnClick(BOOL bCloseOnClick);
  958. //----------------------------------------------------------------------
  959. // Summary:
  960. //     Call this member function to determine if sub menus will close
  961. //     as soon as a control is clicked.
  962. // Returns:
  963. //     TRUE if the sub menu will close when a control is clicked, FALSE
  964. //     if the menu will remain open after a control is clicked.
  965. // See Also: SetCloseSubMenuOnClick
  966. //----------------------------------------------------------------------
  967. BOOL GetCloseSubMenuOnClick() const;
  968. //-----------------------------------------------------------------------
  969. // Summary:
  970. //     Call this method to make button send WM_COMMAND messages while it pressed by user
  971. // Parameters:
  972. //     nExecuteOnPressInterval - Ms delay between each message.
  973. // See Also: GetExecuteOnPressInterval
  974. //-----------------------------------------------------------------------
  975. void SetExecuteOnPressInterval(int nExecuteOnPressInterval);
  976. //-----------------------------------------------------------------------
  977. // Summary:
  978. //     Determines if SetExecuteOnPressInterval was called
  979. //-----------------------------------------------------------------------
  980. int GetExecuteOnPressInterval() const;
  981. //-----------------------------------------------------------------------
  982. // Summary: Returns the ribbon group the control belongs to.
  983. // Returns: If the control belongs to a ribbon group, then the CXTPRibbonGroup
  984. //          that the control belongs to is returned.  If the control does not
  985. //          belong to a ribbon group NULL is returned.
  986. // See Also: CXTPRibbonBar::RebuildControls
  987. //-----------------------------------------------------------------------
  988. CXTPRibbonGroup* GetRibbonGroup() const;
  989. //-----------------------------------------------------------------------
  990. // Summary:
  991. //     Determines if control need to draw its background
  992. // Returns:
  993. //     TRUE if paint manager must skip filling background of control
  994. //-----------------------------------------------------------------------
  995. virtual BOOL IsTransparent() const { return FALSE;}
  996. public:
  997. //----------------------------------------------------------------------
  998. // Summary:
  999. //     This method is called to hide the control.
  1000. // Parameters:
  1001. //     bHide - TRUE to set hide state.
  1002. //----------------------------------------------------------------------
  1003. void SetHideWrap(BOOL bHide);
  1004. //----------------------------------------------------------------------
  1005. // Summary:
  1006. //     This method is called to hide the control.
  1007. // Parameters:
  1008. //     dwFlags - Reasons to hide.
  1009. // Remarks:
  1010. //     HideFlags will tell how a control was hidden if it is hidden
  1011. //     or why it is not visible.  Most of these flags are read only
  1012. //     and should not be set be the developer.
  1013. //     There is only one situation where you should set these flags
  1014. //     manually.  The xtpHideCustomize is the only flag that should
  1015. //     ever be manually set. you would do this when you want the
  1016. //     control to initially be hidden but still exist in customize
  1017. //     popup of toolbar.  This will cause the control to appear in
  1018. //     the Add and Remove Buttons popup without a check mark indicating
  1019. //     that it is currently hidden.  This flag will automatically
  1020. //     be set when a command is hidden this way.
  1021. // See Also: XTPControlHideFlags
  1022. //----------------------------------------------------------------------
  1023. virtual void SetHideFlags(DWORD dwFlags);
  1024. //----------------------------------------------------------------------
  1025. // Summary:
  1026. //     Call this member to set/remove hide flags.
  1027. // Parameters:
  1028. //     dwFlag - XTPControlHideFlags type of flag to be set/remove
  1029. //     bSet   - TRUE to set flag; FALSE to remove.
  1030. // Remarks:
  1031. //     SetHideFlag will tell how a control was hidden if it is hidden
  1032. //     or why it is not visible.  Most of these flags are read only
  1033. //     and should not be set be the developer.
  1034. // Returns:
  1035. //     TRUE if flags was changed
  1036. // See Also: XTPControlHideFlags, SetHideFlags
  1037. //----------------------------------------------------------------------
  1038. BOOL SetHideFlag(XTPControlHideFlags dwFlag, BOOL bSet);
  1039. //----------------------------------------------------------------------
  1040. // Summary:
  1041. //     Call this method to retrieve hidden flags.
  1042. // Returns:
  1043. //     Flags of the control visibility.
  1044. // Remarks:
  1045. //     HideFlags will tell how a control was hidden if it is hidden
  1046. //     or why it is not visible.  Most of these flags are read only
  1047. //     and should not be set be the developer.
  1048. //     There is only one situation where you should set these flags
  1049. //     manually.  The xtpHideCustomize is the only flag that should
  1050. //     ever be manually set. you would do this when you want the
  1051. //     control to initially be hidden but still exist in customize
  1052. //     popup of toolbar.  This will cause the control to appear in
  1053. //     the Add and Remove Buttons popup without a check mark indicating
  1054. //     that it is currently hidden.  This flag will automatically
  1055. //     be set when a command is hidden this way.
  1056. // See Also: XTPControlHideFlags
  1057. //----------------------------------------------------------------------
  1058. DWORD GetHideFlags() const;
  1059. //----------------------------------------------------------------------
  1060. // Summary:
  1061. //     Call this method to retrieve the position of the control's row.
  1062. // Returns:
  1063. //     Bounding rectangle of the control's row.
  1064. //----------------------------------------------------------------------
  1065. CRect GetRowRect() const;
  1066. //----------------------------------------------------------------------
  1067. // Summary:
  1068. //     Call this method to retrieve if the control is wrapped.
  1069. // Returns:
  1070. //     TRUE if the control is wrapped; otherwise returns FALSE
  1071. // See Also: SetWrap
  1072. //----------------------------------------------------------------------
  1073. BOOL GetWrap() const;
  1074. //----------------------------------------------------------------------
  1075. // Summary:
  1076. //     Call this method to set the row of the control.
  1077. // Parameters:
  1078. //     rcRow - Rectangle of the control's row.
  1079. //----------------------------------------------------------------------
  1080. void SetRowRect(CRect rcRow);
  1081. //----------------------------------------------------------------------
  1082. // Summary:
  1083. //     Call this member to set the wrap.
  1084. // Parameters:
  1085. //     bWrap - TRUE to set wrap.
  1086. // See Also: GetWrap
  1087. //----------------------------------------------------------------------
  1088. void SetWrap(BOOL bWrap);
  1089. //----------------------------------------------------------------------
  1090. // Summary:
  1091. //     Call this member to retrieve if the control is expanded.
  1092. // Returns:
  1093. //     TRUE if the control is expanded; otherwise returns FALSE
  1094. //----------------------------------------------------------------------
  1095. BOOL GetExpanded() const;
  1096. //----------------------------------------------------------------------
  1097. // Summary:
  1098. //     Call this member to determine if the mouse pointer is over
  1099. //     the control.
  1100. // Returns:
  1101. //     TRUE if the mouse cursor is over the control; otherwise returns
  1102. //     FALSE
  1103. //----------------------------------------------------------------------
  1104. BOOL IsCursorOver() const;
  1105. //----------------------------------------------------------------------
  1106. // Summary:
  1107. //     This method is called when the control is executed.
  1108. //----------------------------------------------------------------------
  1109. virtual void OnExecute();
  1110. //----------------------------------------------------------------------
  1111. // Summary:
  1112. //     This method is called to determine the size of the control.
  1113. // Parameters:
  1114. //     pDC - Pointer to a valid device context
  1115. // Returns:
  1116. //     Size of the control.
  1117. //----------------------------------------------------------------------
  1118. virtual CSize GetSize(CDC* pDC);
  1119. //----------------------------------------------------------------------
  1120. // Summary:
  1121. //     This method is called to draw the control.
  1122. // Parameters:
  1123. //     pDC - Pointer to a valid device context.
  1124. //----------------------------------------------------------------------
  1125. virtual void Draw(CDC* pDC);
  1126. //----------------------------------------------------------------------
  1127. // Summary:
  1128. //     This method is called before recalculating the parent command
  1129. //     bar size to calculate the dimensions of the control.
  1130. // Parameters:
  1131. //     dwMode - Flags used to determine the height and width of the
  1132. //              dynamic command bar. See Remarks section for a list of
  1133. //              values.
  1134. // Remarks:
  1135. //     The following predefined flags are used to determine the height and
  1136. //     width of the dynamic command bar. Use the bitwise-OR (|) operator to
  1137. //     combine the flags.<p/>
  1138. //
  1139. //     * <b>LM_STRETCH</b> Indicates whether the command bar should be
  1140. //                stretched to the size of the frame. Set if the bar is
  1141. //                not a docking bar (not available for docking). Not set
  1142. //                when the bar is docked or floating (available for
  1143. //                docking). If set, LM_STRETCH returns dimensions based
  1144. //                on the LM_HORZ state. LM_STRETCH works similarly to
  1145. //                the the bStretch parameter used in CalcFixedLayout;
  1146. //                see that member function for more information about
  1147. //                the relationship between stretching and orientation.
  1148. //     * <b>LM_HORZ</b> Indicates that the bar is horizontally or
  1149. //                vertically oriented. Set if the bar is horizontally
  1150. //                oriented, and if it is vertically oriented, it is not
  1151. //                set. LM_HORZ works similarly to the the bHorz
  1152. //                parameter used in CalcFixedLayout; see that member
  1153. //                function for more information about the relationship
  1154. //                between stretching and orientation.
  1155. //     * <b>LM_MRUWIDTH</b> Most Recently Used Dynamic Width. Uses the
  1156. //                remembered most recently used width.
  1157. //     * <b>LM_HORZDOCK</b> Horizontal Docked Dimensions. Returns the
  1158. //                dynamic size with the largest width.
  1159. //     * <b>LM_VERTDOCK</b> Vertical Docked Dimensions. Returns the dynamic
  1160. //                size with the largest height.
  1161. //     * <b>LM_COMMIT</b> Resets LM_MRUWIDTH to current width of
  1162. //                floating command bar.
  1163. //
  1164. //     The framework calls this member function to calculate the dimensions
  1165. //     of a dynamic command bar.<p/>
  1166. //
  1167. //     Override this member function to provide your own layout in classes
  1168. //     you derive from CXTPControl. XTP classes derived from CXTPControl,
  1169. //     such as CXTPControlComboBox, override this member function to provide
  1170. //     their own implementation.
  1171. // See Also:
  1172. //     CXTPControlComboBox, CXTPControlCustom, CXTPControlEdit,
  1173. //     CXTPControlWindowList, CXTPControlWorkspaceActions, CXTPControlToolbars,
  1174. //     CXTPControlOleItems, CXTPControlRecentFileList, CXTPControlSelector,
  1175. //     CXTPControlListBox
  1176. //----------------------------------------------------------------------
  1177. virtual void OnCalcDynamicSize(DWORD dwMode);
  1178. //----------------------------------------------------------------------
  1179. // Summary:
  1180. //     Call this method to redraw the parent command bar.
  1181. //----------------------------------------------------------------------
  1182. void DelayRedrawParent();
  1183. //----------------------------------------------------------------------
  1184. // Summary:
  1185. //     Call this method to recalculate the parent command bar size.
  1186. //----------------------------------------------------------------------
  1187. void DelayLayoutParent();
  1188. //----------------------------------------------------------------------
  1189. // Summary:
  1190. //     Call this method to set the category of the control.
  1191. // Parameters:
  1192. //     lpszCategory - Category of the control.
  1193. //----------------------------------------------------------------------
  1194. void SetCategory(LPCTSTR lpszCategory);
  1195. //----------------------------------------------------------------------
  1196. // Summary:
  1197. //     Call this method to retrieve the category of the control.
  1198. // Returns:
  1199. //     Category of the control.
  1200. //----------------------------------------------------------------------
  1201. CString GetCategory() const;
  1202. //----------------------------------------------------------------------
  1203. // Summary:
  1204. //     Call this method to retrieve the image manager.
  1205. // Returns:
  1206. //     A pointer to a CXTPImageManager object.
  1207. //----------------------------------------------------------------------
  1208. CXTPImageManager* GetImageManager() const;
  1209. //----------------------------------------------------------------------
  1210. // Summary:
  1211. //     Call this method to retrieve the paint manager.
  1212. // Returns:
  1213. //     A pointer to a CXTPPaintManager object.
  1214. //----------------------------------------------------------------------
  1215. CXTPPaintManager* GetPaintManager() const;
  1216. //----------------------------------------------------------------------
  1217. // Summary:
  1218. //     Call this method to retrieve the image of the control.
  1219. // Parameters:
  1220. //     nWidth - Width of the image to retrieve.
  1221. // Returns:
  1222. //     A pointer to a CXTPImageManagerIcon object.
  1223. //----------------------------------------------------------------------
  1224. virtual CXTPImageManagerIcon* GetImage(int nWidth = 16) const;
  1225. //----------------------------------------------------------------------
  1226. // Summary:
  1227. //     Call this method to assign a document template to the control.
  1228. //     Assigned control will be shown only when the child MDI window is activated
  1229. //     with the assigned document template.
  1230. // Parameters:
  1231. //     nIDResource - document template identifier.
  1232. // See Also: AssignDocTemplate
  1233. //----------------------------------------------------------------------
  1234. void AssignDocTemplate(UINT nIDResource);
  1235. //----------------------------------------------------------------------
  1236. // Summary:
  1237. //     Call this method to exclude the document template from control.
  1238. //     Control will be shown only when the child MDI window is activated
  1239. //     with the document template different from excluded.
  1240. // Parameters:
  1241. //     nIDResource - document template identifier.
  1242. // See Also: ExcludeDocTemplate
  1243. //----------------------------------------------------------------------
  1244. void ExcludeDocTemplate(UINT nIDResource);
  1245. //----------------------------------------------------------------------
  1246. // Summary:
  1247. //     Call this method to retrieve if control is default menu item.
  1248. // Returns:
  1249. //     TRUE if control is default menu item.
  1250. // See Also: SetItemDefault
  1251. //----------------------------------------------------------------------
  1252. BOOL IsItemDefault()  const;
  1253. //----------------------------------------------------------------------
  1254. // Summary:
  1255. //     Call this method to set the default menu item.
  1256. // Parameters:
  1257. //     bDefault - TRUE to set control default menu item.
  1258. // Remarks:
  1259. //     A default menu item will appear in bold text.
  1260. // See Also: IsItemDefault
  1261. //----------------------------------------------------------------------
  1262. void SetItemDefault(BOOL bDefault);
  1263. //----------------------------------------------------------------------
  1264. // Summary:
  1265. //     Call this method to determine if control is temporary.
  1266. //     Temporary controls will not be saved to the system registry when
  1267. //     the application is closed (If the CommandBars layout is saved).
  1268. // Returns:
  1269. //     TRUE if control is temporary.
  1270. //----------------------------------------------------------------------
  1271. BOOL IsTemporary() const;
  1272. //----------------------------------------------------------------------
  1273. // Summary:
  1274. //     Call this member to reset the icon and caption of a control
  1275. //     to its default settings before it was customized by the user.
  1276. // Remarks:
  1277. //     The caption and icon of a control is customized while in customization
  1278. //     mode.
  1279. // See Also:
  1280. //     SetCustomIcon, m_strCustomCaption
  1281. //----------------------------------------------------------------------
  1282. void Reset();
  1283. //----------------------------------------------------------------------
  1284. // Summary:
  1285. //     Call this member to load a string from a STRINGTABLE resource
  1286. //     to set the tooltip and description of a control.
  1287. // Parameters:
  1288. //     lpszPrompt -  String from resource file that contains the
  1289. //                  tooltip and description of the item.  The Caption
  1290. //                  will be set to use the tooltip text.  The tooltip
  1291. //                  and description must be separated by "n" if both
  1292. //                  are included.  You can omit the description and
  1293. //                  both the tooltip and description will be set to
  1294. //                  the same value.
  1295. // Remarks:
  1296. //     Resource strings are in the format "DescriptionnToolTip".
  1297. //
  1298. //     Note: The caption is set to the value of the tooltip when this
  1299. //           member is called.
  1300. // See Also: SetCaption, SetDescription, SetTooltip
  1301. //----------------------------------------------------------------------
  1302. void SetPrompt(LPCTSTR lpszPrompt);
  1303. // -------------------------------------------------------------------
  1304. // Summary:
  1305. //     Call this member to retrieve CXTPControl from CCmdUI structure.
  1306. // Parameters:
  1307. //     pCmdUI :  Address of a CCmdUI structure.
  1308. // Returns:
  1309. //     CXTPControl from CCmdUI structure.
  1310. // -------------------------------------------------------------------
  1311. static CXTPControl* AFX_CDECL FromUI(CCmdUI* pCmdUI);
  1312. //-----------------------------------------------------------------------
  1313. // Summary:
  1314. //     Call this member to set a custom icon to this control.
  1315. // Parameters:
  1316. //     hIcon - HICON object containing icon to set to control.
  1317. // See Also: Reset
  1318. //-----------------------------------------------------------------------
  1319. void SetCustomIcon(HICON hIcon);
  1320. //-----------------------------------------------------------------------
  1321. // Summary:
  1322. //     Reads or writes this object from or to an archive.
  1323. // Parameters:
  1324. //     pPX - A CXTPPropExchange object to serialize to or from.
  1325. //----------------------------------------------------------------------
  1326. virtual void DoPropExchange(CXTPPropExchange* pPX);
  1327. //----------------------------------------------------------------------
  1328. // Summary:
  1329. //     This method is called when the user activate control using its underline.
  1330. //----------------------------------------------------------------------
  1331. virtual void OnUnderlineActivate();
  1332. //-----------------------------------------------------------------------
  1333. // Summary:
  1334. //     Call this member to get the control's popup state.
  1335. // Returns:
  1336. //     TRUE if the control is a popup.
  1337. //-----------------------------------------------------------------------
  1338. virtual BOOL GetPopuped() const;
  1339. //----------------------------------------------------------------------
  1340. // Summary:
  1341. //     This method is called to redraw the parent command bar.
  1342. // Parameters:
  1343. //     bAnimate - TRUE to animate changes
  1344. //----------------------------------------------------------------------
  1345. void RedrawParent(BOOL bAnimate = TRUE);
  1346. //----------------------------------------------------------------------
  1347. // Summary:
  1348. //     This method is called to sent message code to parent site window.
  1349. // Parameters:
  1350. //     code - Message to be sent.
  1351. //----------------------------------------------------------------------
  1352. LRESULT NotifySite(UINT code);
  1353. LRESULT NotifySite(UINT code, NMXTPCONTROL* pNM);
  1354. LRESULT NotifySite(CWnd* pSite, UINT code, NMXTPCONTROL* pNM);
  1355. //----------------------------------------------------------------------
  1356. // Summary:
  1357. //     Call this method to manually assign action for control
  1358. // Parameters:
  1359. //     pAction - Action to assign
  1360. // See Also:
  1361. //     CXTPControlAction, GetAction
  1362. //----------------------------------------------------------------------
  1363. virtual void SetAction(CXTPControlAction* pAction);
  1364. //----------------------------------------------------------------------
  1365. // Summary:
  1366. //     Call this method to retrieve action associated with control
  1367. // See Also:
  1368. //     CXTPControlAction, SetAction
  1369. //----------------------------------------------------------------------
  1370. CXTPControlAction* GetAction() const;
  1371. //-------------------------------------------------------------------------
  1372. // Summary:
  1373. //     This method is called when paint manager theme was changed
  1374. //-------------------------------------------------------------------------
  1375. virtual void OnThemeChanged();
  1376. //-----------------------------------------------------------------------
  1377. // Summary:
  1378. //     Call this member to set the width of the control
  1379. // Parameters:
  1380. //     nWidth - The width of the control
  1381. //-----------------------------------------------------------------------
  1382. virtual void SetWidth(int nWidth);
  1383. //-----------------------------------------------------------------------
  1384. // Summary:
  1385. //     Call this member to set the height of the control
  1386. // Parameters:
  1387. //     nHeight - The height of the control
  1388. //-----------------------------------------------------------------------
  1389. virtual void SetHeight(int nHeight);
  1390. //-----------------------------------------------------------------------
  1391. // Summary:
  1392. //     Call this member to get the width of the control
  1393. // Returns:
  1394. //     Width of the control in pixels
  1395. // See Also: GetHeight
  1396. //-----------------------------------------------------------------------
  1397. int GetWidth() const;
  1398. //-----------------------------------------------------------------------
  1399. // Summary:
  1400. //     Call this member to get the height of the control
  1401. // Returns:
  1402. //     Height of the control in pixels
  1403. // See Also: GetWidth
  1404. //-----------------------------------------------------------------------
  1405. int GetHeight() const;
  1406. //-----------------------------------------------------------------------
  1407. // Summary:
  1408. //     This method is called to determine if control has Vista DWM transparent area
  1409. //-----------------------------------------------------------------------
  1410. BOOL HasDwmCompositedRect() const;
  1411. //-----------------------------------------------------------------------
  1412. // Summary:
  1413. //     Call this function to get the size of the command bar button.
  1414. // Returns:
  1415. //     The width and height values of the command bar button.
  1416. //-----------------------------------------------------------------------
  1417. virtual CSize GetButtonSize() const;
  1418. //-----------------------------------------------------------------------
  1419. // Summary:
  1420. //     Call this member function to get the size of a toolbar icon.
  1421. // See Also:
  1422. //     GetButtonSize
  1423. //-----------------------------------------------------------------------
  1424. virtual CSize GetIconSize() const;
  1425. //-----------------------------------------------------------------------
  1426. // Summary:
  1427. //     Call this member function to set the size of a icon for individual control.
  1428. // See Also:
  1429. //     GetIconSize, GetButtonSize
  1430. //-----------------------------------------------------------------------
  1431. void SetIconSize(CSize szIcon);
  1432. //----------------------------------------------------------------------
  1433. // Summary:
  1434. //     This method is called to copy the control.
  1435. // Parameters:
  1436. //     pControl   - Points to a source CXTPControl object
  1437. //     bRecursive - TRUE to copy recursively.
  1438. //----------------------------------------------------------------------
  1439. virtual void Copy(CXTPControl* pControl, BOOL bRecursive = FALSE);
  1440. //----------------------------------------------------------------------
  1441. // Summary:
  1442. //     This method is called when the user clicks the control.
  1443. // Parameters:
  1444. //     bKeyboard - TRUE if the control is selected using the keyboard.
  1445. //     pt        - Mouse cursor position.
  1446. //----------------------------------------------------------------------
  1447. virtual void OnClick(BOOL bKeyboard = FALSE, CPoint pt = CPoint(0, 0));
  1448. protected:
  1449. //----------------------------------------------------------------------
  1450. // Summary:
  1451. //     This method is called to check if control accept focus
  1452. // See Also: SetFocused, IsFocused
  1453. //----------------------------------------------------------------------
  1454. virtual BOOL IsFocusable() const;
  1455. //----------------------------------------------------------------------
  1456. // Summary:
  1457. //     This method is called to assign the order of the control in
  1458. //     the controls list.
  1459. // Parameters:
  1460. //     nIndex - Index of the control.
  1461. //----------------------------------------------------------------------
  1462. void SetIndex(int nIndex) { m_nIndex = nIndex; }
  1463. //----------------------------------------------------------------------
  1464. // Summary:
  1465. //     This method is called to assign expanded state to the control.
  1466. // Parameters:
  1467. //     bExpanded - TRUE if the control is expanded.
  1468. //----------------------------------------------------------------------
  1469. void SetExpanded(BOOL bExpanded);
  1470. //----------------------------------------------------------------------
  1471. // Summary:
  1472. //     This method is called when a non-system key is pressed.
  1473. // Parameters:
  1474. //     nChar - Specifies the virtual key code of the given key.
  1475. //     lParam   - Specifies additional message-dependent information.
  1476. // Returns:
  1477. //     TRUE if key handled, otherwise returns FALSE
  1478. //----------------------------------------------------------------------
  1479. virtual BOOL OnHookKeyDown(UINT nChar, LPARAM lParam);
  1480. //----------------------------------------------------------------------
  1481. // Summary:
  1482. //     This method is called when user rotates the mouse wheel.
  1483. // Parameters:
  1484. //     nFlags - Indicates whether various virtual keys are down.
  1485. //     zDelta - Indicates distance rotated.
  1486. //     point  - Specifies the x- and y-coordinate of the cursor.
  1487. // Returns:
  1488. //     TRUE if key handled, otherwise returns FALSE
  1489. //----------------------------------------------------------------------
  1490. virtual BOOL OnHookMouseWheel(UINT nFlags, short zDelta, CPoint point);
  1491. //----------------------------------------------------------------------
  1492. // Summary:
  1493. //     This method is called to assign a parent command bar object.
  1494. // Parameters:
  1495. //     pParent - Points to a CXTPCommandBar object
  1496. //----------------------------------------------------------------------
  1497. virtual void SetParent(CXTPCommandBar* pParent) { m_pParent = pParent;}
  1498. //----------------------------------------------------------------------
  1499. // Summary:
  1500. //     The ScreenToClient function converts the screen coordinates
  1501. //     of a specified point on the screen
  1502. // Parameters:
  1503. //     point - Pointer to a CPoint object that specifies the screen
  1504. //     coordinates to be converted.
  1505. //----------------------------------------------------------------------
  1506. void ScreenToClient(CPoint* point);
  1507. //----------------------------------------------------------------------
  1508. // Summary:
  1509. //     This helper method is called when the user clicks to the toolbar's
  1510. //     button.
  1511. // Parameters:
  1512. //     rcActiveRect - Rectangle of the control.
  1513. //----------------------------------------------------------------------
  1514. void ClickToolBarButton(CRect rcActiveRect = CRect(0, 0, 0, 0));
  1515. //----------------------------------------------------------------------
  1516. // Summary:
  1517. //     This method is called to popup the control.
  1518. // Parameters:
  1519. //     bPopup - TRUE to set popup.
  1520. // Returns:
  1521. //     TRUE if successful; otherwise returns FALSE
  1522. //----------------------------------------------------------------------
  1523. virtual BOOL OnSetPopup(BOOL bPopup);
  1524. //----------------------------------------------------------------------
  1525. // Summary:
  1526. //     This member is called when the user releases the left mouse button.
  1527. // Parameters:
  1528. //     point - Specifies the x- and y-coordinate of the cursor.
  1529. //----------------------------------------------------------------------
  1530. virtual void OnLButtonUp(CPoint point);
  1531. //----------------------------------------------------------------------
  1532. // Summary:
  1533. //     This member is called when the user press the right mouse button.
  1534. // Parameters:
  1535. //     point - Specifies the x- and y-coordinate of the cursor.
  1536. //----------------------------------------------------------------------
  1537. virtual BOOL OnRButtonDown(CPoint point);
  1538. //----------------------------------------------------------------------
  1539. // Summary:
  1540. //     This member is called when the user releases the right mouse button.
  1541. // Parameters:
  1542. //     point - Specifies the x- and y-coordinate of the cursor.
  1543. //----------------------------------------------------------------------
  1544. virtual BOOL OnRButtonUp(CPoint point);
  1545. //----------------------------------------------------------------------
  1546. // Summary:
  1547. //     This member is called when the user double-clicks the left mouse button.
  1548. // Parameters:
  1549. //     point - Specifies the x- and y-coordinates of the cursor.
  1550. // Returns:
  1551. //     TRUE if successful; otherwise returns FALSE
  1552. //----------------------------------------------------------------------
  1553. virtual BOOL OnLButtonDblClk(CPoint point);
  1554. //----------------------------------------------------------------------
  1555. // Summary:
  1556. //     This member is called when the mouse cursor moves.
  1557. // Parameters:
  1558. //     point - Specifies the x- and y-coordinate of the cursor.
  1559. //----------------------------------------------------------------------
  1560. virtual void OnMouseMove(CPoint point);
  1561. //----------------------------------------------------------------------
  1562. // Summary:
  1563. //     Called after the mouse hovers over the control.
  1564. //----------------------------------------------------------------------
  1565. virtual void OnMouseHover();
  1566. //----------------------------------------------------------------------
  1567. // Summary:
  1568. //     This method is called when the control becomes selected.
  1569. // Parameters:
  1570. //     bSelected - TRUE if the control becomes selected.
  1571. // Returns:
  1572. //     TRUE if successful; otherwise returns FALSE
  1573. //----------------------------------------------------------------------
  1574. virtual BOOL OnSetSelected(int bSelected);
  1575. //----------------------------------------------------------------------
  1576. // Summary:
  1577. //     Call this method to determine if command bars is in customize
  1578. //     mode.
  1579. // Returns:
  1580. //     TRUE if command bars is in Customize mode; otherwise returns
  1581. //     FALSE
  1582. //----------------------------------------------------------------------
  1583. BOOL IsCustomizeMode() const;
  1584. //----------------------------------------------------------------------
  1585. // Summary:
  1586. //     This member is called when the user starts to drag the control in customize mode.
  1587. // Parameters:
  1588. //     point - Specifies the x- and y-coordinate of the cursor.
  1589. // See Also: IsCustomizeMode, CustomizeStartResize
  1590. //----------------------------------------------------------------------
  1591. virtual void CustomizeStartDrag(CPoint point);
  1592. //----------------------------------------------------------------------
  1593. // Summary:
  1594. //     This method is called when user starts resize control in customize mode
  1595. // Parameters:
  1596. //     point - Specifies the x- and y-coordinate of the cursor.
  1597. // Returns:
  1598. //     TRUE if control process this event.
  1599. // See Also: IsCustomizeMode, CustomizeStartDrag, GetCustomizeMinWidth
  1600. //----------------------------------------------------------------------
  1601. virtual BOOL CustomizeStartResize(CPoint point);
  1602. //----------------------------------------------------------------------
  1603. // Summary:
  1604. //     This member is called when the user moves the mouse over the
  1605. //     control.
  1606. // Parameters:
  1607. //     pDataObject - Points to a CXTPControl object
  1608. //     point       - Mouse position.
  1609. //     dropEffect  - DROPEFFECT enumerator.
  1610. //----------------------------------------------------------------------
  1611. virtual void OnCustomizeDragOver(CXTPControl* pDataObject, CPoint point, DROPEFFECT& dropEffect);
  1612. //----------------------------------------------------------------------
  1613. // Summary:
  1614. //     This member checks if the user can drop the control.
  1615. // Parameters:
  1616. //     pCommandBar - Points to a CXTPCommandBar object
  1617. //     point       - Mouse position.
  1618. //     dropEffect  - DROPEFFECT enumerator.
  1619. // Returns:
  1620. //     TRUE if successful, otherwise returns FALSE
  1621. //----------------------------------------------------------------------
  1622. virtual BOOL IsCustomizeDragOverAvail(CXTPCommandBar* pCommandBar, CPoint point, DROPEFFECT& dropEffect);
  1623. //----------------------------------------------------------------------
  1624. // Summary:
  1625. //     This member checks if the user can resize control.
  1626. // Returns:
  1627. //     TRUE if resize available.
  1628. //----------------------------------------------------------------------
  1629. virtual BOOL IsCustomizeResizeAllow() const;
  1630. //----------------------------------------------------------------------
  1631. // Summary:
  1632. //     Retrieves available minimum width of control.
  1633. // Remarks:
  1634. //     This method is called in CustomizeStartResize to retrieve dimension of available rectangles
  1635. //     of resized control.
  1636. // Returns:
  1637. //     Returns zero by default.
  1638. // See Also: CXTPControlComboBox::GetCustomizeMinWidth, CXTPControlEdit::GetCustomizeMinWidth
  1639. //----------------------------------------------------------------------
  1640. virtual int GetCustomizeMinWidth() const;
  1641. virtual int GetCustomizeMinHeight() const;
  1642. //----------------------------------------------------------------------
  1643. // Summary:
  1644. //     This member is called when the mouse cursor moves in customized mode
  1645. // Parameters:
  1646. //     point - Specifies the x- and y-coordinate of the cursor.
  1647. //----------------------------------------------------------------------
  1648. void OnCustomizeMouseMove(CPoint point);
  1649. //-------------------------------------------------------------------------
  1650. // Summary:
  1651. //     This virtual method is called in idle-time processing
  1652. //-------------------------------------------------------------------------
  1653. virtual void OnIdleUpdate();
  1654. //-------------------------------------------------------------------------
  1655. // Summary:
  1656. //     This method is called when control was removed from parent controls collection
  1657. //-------------------------------------------------------------------------
  1658. virtual void OnRemoved();
  1659. virtual INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
  1660. protected:
  1661. //----------------------------------------------------------------------
  1662. // Summary:
  1663. //     This method is called to determine if control can be reposition in customize mode.
  1664. // See Also:
  1665. //     xtpFlagNoMovable
  1666. //----------------------------------------------------------------------
  1667. virtual BOOL IsCustomizeMovable() const;
  1668. //-----------------------------------------------------------------------
  1669. // Summary:
  1670. //     This method is called from LoadCommandBars
  1671. //     to restore controls and its child commandbars
  1672. // Parameters:
  1673. //     pCommandBarList - CommandBars collection contains all commandbars was restored
  1674. // See Also: GenerateCommandBarList
  1675. //-----------------------------------------------------------------------
  1676. virtual void RestoreCommandBarList(CXTPCommandBarList* pCommandBarList);
  1677. //-----------------------------------------------------------------------
  1678. // Summary:
  1679. //     This method is called from SaveCommandBars
  1680. //     to save all child commandbars
  1681. // Parameters:
  1682. //      nID - Current Identifier counter
  1683. //      pCommandBarList - List of saved commandbars
  1684. //      pParam - Serialize parameters.
  1685. // See Also: RestoreCommandBarList
  1686. //-----------------------------------------------------------------------
  1687. virtual void GenerateCommandBarList(DWORD& nID, CXTPCommandBarList* pCommandBarList, XTP_COMMANDBARS_PROPEXCHANGE_PARAM* pParam);
  1688. //-----------------------------------------------------------------------
  1689. // Summary:
  1690. //     This method is called when action property was changed
  1691. // Parameters:
  1692. //     nProperty - Property of the action
  1693. // See Also: OnActionChanging
  1694. //-----------------------------------------------------------------------
  1695. virtual void OnActionChanged(int nProperty);
  1696. //-----------------------------------------------------------------------
  1697. // Summary:
  1698. //     This method is called when action property is about to be changed
  1699. // Parameters:
  1700. //     nProperty - Property of the action
  1701. // See Also: OnActionChanged
  1702. //-----------------------------------------------------------------------
  1703. virtual void OnActionChanging(int nProperty);
  1704. protected:
  1705. virtual void OnCaptionChanged();
  1706. protected:
  1707. //{{AFX_CODEJOCK_PRIVATE
  1708. virtual HRESULT GetAccessibleParent(IDispatch** ppdispParent);
  1709. virtual HRESULT GetAccessibleDescription(VARIANT varChild, BSTR* pszDescription);
  1710. virtual HRESULT GetAccessibleChildCount(long* pcountChildren);
  1711. virtual HRESULT GetAccessibleChild(VARIANT varChild, IDispatch** ppdispChild);
  1712. virtual HRESULT GetAccessibleName(VARIANT varChild, BSTR* pszName);
  1713. virtual HRESULT GetAccessibleRole(VARIANT varChild, VARIANT* pvarRole);
  1714. virtual HRESULT AccessibleLocation(long *pxLeft, long *pyTop, long *pcxWidth, long* pcyHeight, VARIANT varChild);
  1715. virtual HRESULT AccessibleHitTest(long xLeft, long yTop, VARIANT* pvarChild);
  1716. virtual HRESULT GetAccessibleState(VARIANT varChild, VARIANT* pvarState);
  1717. virtual CCmdTarget* GetAccessible();
  1718. virtual HRESULT GetAccessibleDefaultAction(VARIANT varChild, BSTR* pszDefaultAction);
  1719. virtual HRESULT AccessibleDoDefaultAction(VARIANT varChild);
  1720. virtual HRESULT AccessibleSelect(long flagsSelect, VARIANT varChild);
  1721. DECLARE_INTERFACE_MAP()
  1722. //}}AFX_CODEJOCK_PRIVATE
  1723. private:
  1724. void OnInvertTracker(CDC* pDC, CRect rect);
  1725. BOOL NeedPressOnExecute() const;
  1726. protected:
  1727. DWORD_PTR m_nTag;               // Control tag.
  1728. int m_nIndex;                   // Index of the control.
  1729. int m_nId;                      // Identifier of the control.
  1730. int m_nIconId;                  // Identifier of the control's image.
  1731. int m_nHelpId;                  // Help identifier
  1732. int m_nCustomIconId;            // Identifier of the control's custom image.
  1733. BOOL m_bWrap;                   // TRUE if the control is wrapped.
  1734. BOOL m_bBeginGroup;             // TRUE if the control starts new group.
  1735. BOOL m_bEnabled;                // TRUE if the control is enabled.
  1736. BOOL m_bChecked;                // TRUE if the control is checked.
  1737. BOOL m_bSelected;               // TRUE if the control is selected.
  1738. BOOL m_bPressed;                // TRUE if the control is pushed.
  1739. BOOL m_bTemporary;              // TRUE if the control is temporary.
  1740. CRect m_rcRow;                  // Bounding rectangle of the control's row.
  1741. CRect m_rcControl;              // Bounding rectangle of the control.
  1742. DWORD m_dwHideFlags;            // Hidden flags.
  1743. DWORD m_dwFlags;                // Flags of the control.
  1744. CString m_strCaption;           // Caption of the control.
  1745. CString m_strCustomCaption;     // User defined caption.
  1746. CString m_strShortcutText;      // Shortcut text.
  1747. CString m_strShortcutTextAuto;  // Shortcut text.
  1748. CString m_strTooltipText;       // Tooltip text.
  1749. CString m_strDescriptionText;   // Description text.
  1750. CString m_strParameter;         // Parameter text.
  1751. CString m_strKeyboardTip;       // Keyboard tip
  1752. CXTPControls* m_pControls;      // Parent control collection
  1753. XTPControlType m_controlType;   // Type of the control.
  1754. CXTPCommandBar* m_pParent;      // The Parent command bar.
  1755. BOOL m_bExpanded;               // TRUE if the control is expanded.
  1756. CString m_strCategory;          // Category of the control.
  1757. BOOL m_bDefaultItem;            // TRUE if the item is default popup item;
  1758. CDocTemplateMap m_mapDocTemplatesAssigned;  // Assigned templates.
  1759. CDocTemplateMap m_mapDocTemplatesExcluded;  // Excluded templates.
  1760. XTPButtonStyle m_buttonStyle;   // Button Style.
  1761. XTPButtonStyle m_buttonCustomStyle;         // User defined style of button.
  1762. XTPButtonStyle m_buttonRibbonStyle;         // User defined style of button.
  1763. BOOL m_bCloseSubMenuOnClick;        // TRUE is sub-menus are closed as soon as a control is clicked.
  1764. CXTPRibbonGroup* m_pRibbonGroup;    // Ribbon group of control
  1765. CXTPControlAction* m_pAction;       // Action of the control.
  1766. int m_nWidth;                       // Width of the control.
  1767. int m_nHeight;                      // Height of the control.
  1768. int m_nExecuteOnPressInterval;      // Delay between each message when control is pressed.
  1769. CSize m_szIcon;
  1770. private:
  1771. DECLARE_XTP_CONTROL(CXTPControl)
  1772. friend class CXTPControls;
  1773. friend class CXTPCommandBar;
  1774. friend class CXTPToolBar;
  1775. friend class CXTPPopupBar;
  1776. friend class CXTPCustomizeSheet;
  1777. friend class CXTPCustomizeDropSource;
  1778. friend class CXTPRibbonGroup;
  1779. friend class CXTPRibbonGroups;
  1780. friend class CXTPRibbonBar;
  1781. friend class CXTPRibbonControls;
  1782. friend class CXTPControlAction;
  1783. friend class CXTPRibbonQuickAccessControls;
  1784. };
  1785. //////////////////////////////////////////////////////////////////////////
  1786. AFX_INLINE long CXTPControl::GetIndex() const {
  1787. return m_nIndex;
  1788. }
  1789. AFX_INLINE void CXTPControl::SetShortcutText(LPCTSTR lpszShortcutText) {
  1790. m_strShortcutText = lpszShortcutText;
  1791. }
  1792. AFX_INLINE CString CXTPControl::GetShortcutText() const {
  1793. return !m_strShortcutText.IsEmpty() ? m_strShortcutText :
  1794. m_pAction && !m_pAction->GetShortcutText().IsEmpty()  ? m_pAction->GetShortcutText() : m_strShortcutTextAuto;
  1795. }
  1796. AFX_INLINE void CXTPControl::SetDescription(LPCTSTR lpszDescription) {
  1797. m_strDescriptionText = lpszDescription;
  1798. }
  1799. AFX_INLINE CString CXTPControl::GetDescription() const {
  1800. return !m_strDescriptionText.IsEmpty() ? m_strDescriptionText : m_pAction ? m_pAction->GetDescription() : _T("");
  1801. }
  1802. AFX_INLINE CString CXTPControl::GetTooltip() const {
  1803. return !m_strTooltipText.IsEmpty() ? m_strTooltipText : m_pAction ? m_pAction->GetTooltip() : _T("");
  1804. }
  1805. AFX_INLINE void CXTPControl::SetTooltip(LPCTSTR lpszTooltip) {
  1806. m_strTooltipText = lpszTooltip;
  1807. }
  1808. AFX_INLINE CString CXTPControl::GetCaption() const {
  1809. return !m_strCustomCaption.IsEmpty() ? m_strCustomCaption : !m_strCaption.IsEmpty() ? m_strCaption : m_pAction ? m_pAction->GetCaption() : _T("");
  1810. }
  1811. AFX_INLINE void CXTPControl::SetParameter(LPCTSTR lpszParameter) {
  1812. m_strParameter = lpszParameter;
  1813. }
  1814. AFX_INLINE CString CXTPControl::GetParameter() const {
  1815. return m_strParameter;
  1816. }
  1817. AFX_INLINE int CXTPControl::GetID () const {
  1818. return m_nId;
  1819. }
  1820. AFX_INLINE void CXTPControl::SetIconId(int nId) {
  1821. if (m_nIconId != nId) {m_nIconId = nId; RedrawParent(FALSE);}
  1822. }
  1823. AFX_INLINE int CXTPControl::GetIconId() const {
  1824. return m_nCustomIconId != 0 ? m_nCustomIconId : m_nIconId > 0 ? m_nIconId : m_pAction ? m_pAction->GetIconId() : m_nId;
  1825. }
  1826. AFX_INLINE void CXTPControl::SetHelpId(int nId) {
  1827. m_nHelpId = nId;
  1828. }
  1829. AFX_INLINE int CXTPControl::GetHelpId() const {
  1830. return m_nHelpId > 0 ? m_nHelpId : m_pAction ? m_pAction->GetHelpId() : m_nId;
  1831. }
  1832. AFX_INLINE void CXTPControl::SetBeginGroup(BOOL bBeginGroup) {
  1833. if (m_bBeginGroup != bBeginGroup) {m_bBeginGroup = bBeginGroup; DelayLayoutParent();}
  1834. }
  1835. AFX_INLINE BOOL CXTPControl::GetBeginGroup() const {
  1836. return m_bBeginGroup;
  1837. }
  1838. AFX_INLINE BOOL CXTPControl::GetEnabled() const {
  1839. return m_bEnabled == -1 && m_pAction ? m_pAction->GetEnabled() : m_bEnabled;
  1840. }
  1841. AFX_INLINE void CXTPControl::SetEnabled(BOOL bEnabled) {
  1842. if (m_bEnabled != bEnabled) {m_bEnabled = bEnabled; RedrawParent();}
  1843. }
  1844. AFX_INLINE BOOL CXTPControl::GetChecked() const {
  1845. return m_bChecked == -1 && m_pAction ? m_pAction->GetChecked() : m_bChecked;
  1846. }
  1847. AFX_INLINE void CXTPControl::SetChecked(BOOL bChecked) {
  1848. if (m_bChecked != bChecked) {m_bChecked = bChecked; RedrawParent();}
  1849. }
  1850. AFX_INLINE int CXTPControl::GetSelected() const {
  1851. return m_bSelected;
  1852. }
  1853. AFX_INLINE BOOL CXTPControl::GetPressed() const {
  1854. return m_bPressed;
  1855. }
  1856. AFX_INLINE void CXTPControl::SetPressed(BOOL bPressed) {
  1857. m_bPressed = bPressed;
  1858. }
  1859. AFX_INLINE void CXTPControl::SetRect(CRect rcControl) {
  1860. m_rcControl = rcControl;
  1861. }
  1862. AFX_INLINE CRect CXTPControl::GetRect() const {
  1863. return m_rcControl;
  1864. }
  1865. AFX_INLINE CXTPCommandBar* CXTPControl::GetParent() const {
  1866. return m_pParent;
  1867. }
  1868. AFX_INLINE BOOL CXTPControl::IsVisible(DWORD dwSkipFlags) const {
  1869. if (m_pAction && !m_pAction->IsVisible()) return FALSE;
  1870. return (m_dwHideFlags & ~dwSkipFlags) == xtpNoHide;
  1871. }
  1872. AFX_INLINE void CXTPControl::SetHideFlags(DWORD dwFlags) {
  1873. m_dwHideFlags = dwFlags;
  1874. }
  1875. AFX_INLINE BOOL CXTPControl::SetHideFlag(XTPControlHideFlags dwFlag, BOOL bHide) {
  1876. DWORD dwHideFlags = m_dwHideFlags;
  1877. if (bHide) SetHideFlags (m_dwHideFlags | dwFlag); else SetHideFlags(m_dwHideFlags & ~dwFlag);
  1878. return dwHideFlags != m_dwHideFlags;
  1879. }
  1880. AFX_INLINE void CXTPControl::SetHideWrap(BOOL bHide) {
  1881. SetHideFlag(xtpHideWrap, bHide);
  1882. }
  1883. AFX_INLINE DWORD CXTPControl::GetHideFlags() const {
  1884. return m_dwHideFlags;
  1885. }
  1886. AFX_INLINE CRect CXTPControl::GetRowRect() const {
  1887. return m_rcRow;
  1888. }
  1889. AFX_INLINE void CXTPControl::SetRowRect(CRect rcRow) {
  1890. m_rcRow = rcRow;
  1891. }
  1892. AFX_INLINE BOOL CXTPControl::GetWrap() const {
  1893. return m_bWrap;
  1894. }
  1895. AFX_INLINE void CXTPControl::SetWrap(BOOL bWrap) {
  1896. m_bWrap = bWrap;
  1897. }
  1898. AFX_INLINE CXTPControls* CXTPControl::GetControls() const {
  1899. return m_pControls;
  1900. }
  1901. AFX_INLINE BOOL CXTPControl::IsTemporary() const {
  1902. return m_bTemporary;
  1903. }
  1904. AFX_INLINE XTPControlType CXTPControl::GetType() const {
  1905. return m_controlType;
  1906. }
  1907. AFX_INLINE BOOL CXTPControl::GetExpanded() const {
  1908. return m_bExpanded;
  1909. }
  1910. AFX_INLINE void CXTPControl::SetCategory(LPCTSTR lpszCategory) {
  1911. m_strCategory = lpszCategory;
  1912. }
  1913. AFX_INLINE CString CXTPControl::GetCategory() const {
  1914. return !m_strCategory.IsEmpty() ? m_strCategory : m_pAction ? m_pAction->GetCategory() : _T("");
  1915. }
  1916. AFX_INLINE void CXTPControl::SetTag(DWORD_PTR dwTag) {
  1917. m_nTag = dwTag;
  1918. }
  1919. AFX_INLINE DWORD_PTR CXTPControl::GetTag() const {
  1920. return m_nTag;
  1921. }
  1922. AFX_INLINE void CXTPControl::AssignDocTemplate(UINT nIDResource) {
  1923. m_mapDocTemplatesAssigned.SetAt(nIDResource, TRUE);
  1924. }
  1925. AFX_INLINE void CXTPControl::ExcludeDocTemplate(UINT nIDResource) {
  1926. m_mapDocTemplatesExcluded.SetAt(nIDResource, TRUE);
  1927. }
  1928. AFX_INLINE void CXTPControl::OnClick(BOOL /*bKeyboard = FALSE*/, CPoint /*pt = CPoint(0, 0)*/) {
  1929. }
  1930. AFX_INLINE void CXTPControl::SetStyle(XTPButtonStyle buttonStyle) {
  1931. if (m_buttonStyle != buttonStyle)
  1932. {
  1933. m_buttonStyle = buttonStyle;
  1934. DelayLayoutParent();
  1935. }
  1936. }
  1937. AFX_INLINE CXTPCommandBar* CXTPControl::GetCommandBar() const {
  1938. return NULL;
  1939. }
  1940. AFX_INLINE void CXTPControl::SetCloseSubMenuOnClick(BOOL bCloseOnClick) {
  1941. m_bCloseSubMenuOnClick = bCloseOnClick;
  1942. }
  1943. AFX_INLINE BOOL CXTPControl::GetCloseSubMenuOnClick() const {
  1944. return m_bCloseSubMenuOnClick;
  1945. }
  1946. AFX_INLINE int CXTPControl::GetCustomizeMinWidth() const {
  1947. return 0;
  1948. }
  1949. AFX_INLINE int CXTPControl::GetCustomizeMinHeight() const {
  1950. return 0;
  1951. }
  1952. AFX_INLINE void CXTPControl::SetWidth(int nWidth) {
  1953. if (m_nWidth != nWidth) {
  1954. m_nWidth = nWidth;
  1955. DelayLayoutParent();
  1956. }
  1957. }
  1958. AFX_INLINE void CXTPControl::SetHeight(int nHeight) {
  1959. if (m_nHeight != nHeight) {
  1960. m_nHeight = nHeight;
  1961. DelayLayoutParent();
  1962. }
  1963. }
  1964. AFX_INLINE BOOL CXTPControl::OnHookKeyDown(UINT /*nChar*/, LPARAM /*lParam*/) {
  1965. return FALSE;
  1966. }
  1967. AFX_INLINE BOOL CXTPControl::OnSetPopup(BOOL /*bPopup*/) {
  1968. return FALSE;
  1969. }
  1970. AFX_INLINE void CXTPControl::OnLButtonUp(CPoint /*point*/) {
  1971. }
  1972. AFX_INLINE BOOL CXTPControl::OnRButtonDown(CPoint /*point*/) {
  1973. return FALSE;
  1974. }
  1975. AFX_INLINE BOOL CXTPControl::OnRButtonUp(CPoint /*point*/) {
  1976. return FALSE;
  1977. }
  1978. AFX_INLINE void CXTPControl::OnMouseMove(CPoint /*point*/) {
  1979. }
  1980. AFX_INLINE BOOL CXTPControl::IsFocusable() const {
  1981. return FALSE;
  1982. }
  1983. AFX_INLINE void CXTPControl::SetFocused(BOOL /*bFocused*/) {
  1984. }
  1985. AFX_INLINE BOOL CXTPControl::IsFocused() const{
  1986. return FALSE;
  1987. }
  1988. AFX_INLINE void CXTPControl::OnCalcDynamicSize(DWORD /*dwMode*/) {
  1989. }
  1990. AFX_INLINE CXTPRibbonGroup* CXTPControl::GetRibbonGroup() const {
  1991. return m_pRibbonGroup;
  1992. }
  1993. AFX_INLINE BOOL CXTPControl::OnHookMouseWheel(UINT /*nFlags*/, short /*zDelta*/, CPoint /*pt*/) {
  1994. return FALSE;
  1995. }
  1996. AFX_INLINE BOOL CXTPControl::GetPopuped() const {
  1997. return FALSE;
  1998. }
  1999. AFX_INLINE void CXTPControl::OnIdleUpdate() {
  2000. }
  2001. AFX_INLINE CXTPControlAction* CXTPControl::GetAction() const {
  2002. return m_pAction;
  2003. }
  2004. AFX_INLINE void CXTPControl::OnThemeChanged() {
  2005. }
  2006. AFX_INLINE int CXTPControl::GetWidth() const {
  2007. return m_nWidth;
  2008. }
  2009. AFX_INLINE int CXTPControl::GetHeight() const {
  2010. return m_nHeight;
  2011. }
  2012. AFX_INLINE void CXTPControl::OnActionChanging(int /*nProperty*/) {
  2013. }
  2014. AFX_INLINE void CXTPControl::SetExecuteOnPressInterval(int nExecuteOnPressInterval) {
  2015. m_nExecuteOnPressInterval = nExecuteOnPressInterval;
  2016. }
  2017. AFX_INLINE int CXTPControl::GetExecuteOnPressInterval() const {
  2018. return m_nExecuteOnPressInterval;
  2019. }
  2020. AFX_INLINE void CXTPControl::SetKeyboardTip(LPCTSTR lpszKeyboardTip) {
  2021. m_strKeyboardTip = lpszKeyboardTip;
  2022. }
  2023. AFX_INLINE CString CXTPControl::GetKeyboardTip() const {
  2024. return !m_strKeyboardTip.IsEmpty() ? m_strKeyboardTip : m_pAction ? m_pAction->GetKeyboardTip() : _T("");
  2025. }
  2026. AFX_INLINE INT_PTR CXTPControl::OnToolHitTest(CPoint /*point*/, TOOLINFO* /*pTI*/) const {
  2027. return -1;
  2028. }
  2029. AFX_INLINE void CXTPControl::SetIconSize(CSize szIcon) {
  2030. m_szIcon = szIcon; RedrawParent(FALSE);
  2031. }
  2032. AFX_INLINE void CXTPControl::OnCaptionChanged() {
  2033. }
  2034. #endif // #if !defined(__XTPCONTROL_H__)