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

对话框与窗口

开发平台:

Visual C++

  1. // XTPControlExt.h
  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(__XTPCONTROLEXT_H__)
  22. #define __XTPCONTROLEXT_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. #include "XTPCommandBarsDefines.h"
  28. #include "XTPControlButton.h"
  29. class CXTPTabClientWnd;
  30. class CXTPMarkupUIElement;
  31. //===========================================================================
  32. // Summary:
  33. //     CXTPControlWindowList is a CXTPControlButton derived class.
  34. //     It is used internally to create window list items.
  35. //===========================================================================
  36. class _XTP_EXT_CLASS CXTPControlWindowList : public CXTPControlButton
  37. {
  38. protected:
  39. //-----------------------------------------------------------------------
  40. // Summary:
  41. //     This method is called before recalculating the parent command
  42. //     bar size to calculate the dimensions of the control.
  43. // Parameters:
  44. //     dwMode - Flags used to determine the height and width of the
  45. //              dynamic command bar. See Remarks section for a list of
  46. //              values.
  47. // Remarks:
  48. //     The following predefined flags are used to determine the height and
  49. //     width of the dynamic command bar. Use the bitwise-OR (|) operator to
  50. //     combine the flags.<p/>
  51. //
  52. //     * <b>LM_STRETCH</b> Indicates whether the command bar should be
  53. //                stretched to the size of the frame. Set if the bar is
  54. //                not a docking bar (not available for docking). Not set
  55. //                when the bar is docked or floating (available for
  56. //                docking). If set, LM_STRETCH returns dimensions based
  57. //                on the LM_HORZ state. LM_STRETCH works similarly to
  58. //                the the bStretch parameter used in CalcFixedLayout;
  59. //                see that member function for more information about
  60. //                the relationship between stretching and orientation.
  61. //     * <b>LM_HORZ</b> Indicates that the bar is horizontally or
  62. //                vertically oriented. Set if the bar is horizontally
  63. //                oriented, and if it is vertically oriented, it is not
  64. //                set. LM_HORZ works similarly to the the bHorz
  65. //                parameter used in CalcFixedLayout; see that member
  66. //                function for more information about the relationship
  67. //                between stretching and orientation.
  68. //     * <b>LM_MRUWIDTH</b> Most Recently Used Dynamic Width. Uses the
  69. //                remembered most recently used width.
  70. //     * <b>LM_HORZDOCK</b> Horizontal Docked Dimensions. Returns the
  71. //                dynamic size with the largest width.
  72. //     * <b>LM_VERTDOCK</b> Vertical Docked Dimensions. Returns the dynamic
  73. //                size with the largest height.
  74. //     * <b>LM_COMMIT</b> Resets LM_MRUWIDTH to current width of
  75. //                floating command bar.
  76. //
  77. //     The framework calls this member function to calculate the dimensions
  78. //     of a dynamic command bar.<p/>
  79. //
  80. //     Override this member function to provide your own layout in classes
  81. //     you derive from CXTPControl. XTP classes derived from CXTPControl,
  82. //     such as CXTPControlComboBox, override this member function to provide
  83. //     their own implementation.
  84. // See Also:
  85. //     CXTPControlComboBox, CXTPControlCustom, CXTPControlEdit,
  86. //     CXTPControl, CXTPControlWorkspaceActions, CXTPControlToolbars,
  87. //     CXTPControlOleItems, CXTPControlRecentFileList, CXTPControlSelector,
  88. //     CXTPControlListBox
  89. //-----------------------------------------------------------------------
  90. virtual void OnCalcDynamicSize(DWORD dwMode);
  91. //-----------------------------------------------------------------------
  92. // Summary:
  93. //     Call this member to check if the user can drop the control.
  94. // Parameters:
  95. //     pCommandBar - Points to a CXTPCommandBar object
  96. //     point       - Mouse position.
  97. //     dropEffect  - DROPEFFECT enumerator.
  98. // Returns:
  99. //     TRUE if successful, otherwise returns FALSE
  100. //-----------------------------------------------------------------------
  101. virtual BOOL IsCustomizeDragOverAvail(CXTPCommandBar* pCommandBar, CPoint point, DROPEFFECT& dropEffect);
  102. public:
  103. //-----------------------------------------------------------------------
  104. // Summary:
  105. //     Adds the number and an ampersand "&" before the caption of in item that
  106. //     appears in the Windows List.
  107. // Parameters:
  108. //     lpszTitle - Text string to display in Windows List, this test will be appended
  109. //                 after the number.
  110. //     nIndex       - Position within the Windows list that the Item should appear.
  111. // Returns:
  112. //     Returns the text string containing the entire string that will appear in
  113. //     the Windows List.
  114. //-----------------------------------------------------------------------
  115. static CString AFX_CDECL ConstructCaption(const CString& lpszTitle, int nIndex);
  116. public:
  117. static UINT m_nFistMDIChild;        // First MDI child id.
  118. static UINT m_nItemCount;           // Maximum allowed items.
  119. static BOOL m_bShowRadioButtons;    // TRUE to show Radio buttons.
  120. private:
  121. DECLARE_XTP_CONTROL(CXTPControlWindowList)
  122. };
  123. //===========================================================================
  124. // Summary:
  125. //     CXTPControlWorkspaceActions is a CXTPControlButton derived class. It used internally to
  126. //     add workspace actions to window menu.
  127. //===========================================================================
  128. class _XTP_EXT_CLASS CXTPControlWorkspaceActions : public CXTPControlButton
  129. {
  130. protected:
  131. //-----------------------------------------------------------------------
  132. // Summary:
  133. //     This method is called before recalculating the parent command
  134. //     bar size to calculate the dimensions of the control.
  135. // Parameters:
  136. //     dwMode - Flags used to determine the height and width of the
  137. //              dynamic command bar. See Remarks section for a list of
  138. //              values.
  139. // Remarks:
  140. //     The following predefined flags are used to determine the height and
  141. //     width of the dynamic command bar. Use the bitwise-OR (|) operator to
  142. //     combine the flags.<p/>
  143. //
  144. //     * <b>LM_STRETCH</b> Indicates whether the command bar should be
  145. //                stretched to the size of the frame. Set if the bar is
  146. //                not a docking bar (not available for docking). Not set
  147. //                when the bar is docked or floating (available for
  148. //                docking). If set, LM_STRETCH returns dimensions based
  149. //                on the LM_HORZ state. LM_STRETCH works similarly to
  150. //                the the bStretch parameter used in CalcFixedLayout;
  151. //                see that member function for more information about
  152. //                the relationship between stretching and orientation.
  153. //     * <b>LM_HORZ</b> Indicates that the bar is horizontally or
  154. //                vertically oriented. Set if the bar is horizontally
  155. //                oriented, and if it is vertically oriented, it is not
  156. //                set. LM_HORZ works similarly to the the bHorz
  157. //                parameter used in CalcFixedLayout; see that member
  158. //                function for more information about the relationship
  159. //                between stretching and orientation.
  160. //     * <b>LM_MRUWIDTH</b> Most Recently Used Dynamic Width. Uses the
  161. //                remembered most recently used width.
  162. //     * <b>LM_HORZDOCK</b> Horizontal Docked Dimensions. Returns the
  163. //                dynamic size with the largest width.
  164. //     * <b>LM_VERTDOCK</b> Vertical Docked Dimensions. Returns the dynamic
  165. //                size with the largest height.
  166. //     * <b>LM_COMMIT</b> Resets LM_MRUWIDTH to current width of
  167. //                floating command bar.
  168. //
  169. //     The framework calls this member function to calculate the dimensions
  170. //     of a dynamic command bar.<p/>
  171. //
  172. //     Override this member function to provide your own layout in classes
  173. //     you derive from CXTPControl. XTP classes derived from CXTPControl,
  174. //     such as CXTPControlComboBox, override this member function to provide
  175. //     their own implementation.
  176. // See Also:
  177. //     CXTPControlComboBox, CXTPControlCustom, CXTPControlEdit,
  178. //     CXTPControlWindowList, CXTPControl, CXTPControlToolbars,
  179. //     CXTPControlOleItems, CXTPControlRecentFileList, CXTPControlSelector,
  180. //     CXTPControlListBox
  181. //-----------------------------------------------------------------------
  182. virtual void OnCalcDynamicSize(DWORD dwMode);
  183. //-----------------------------------------------------------------------
  184. // Summary:
  185. //     Adds action command to parent controls.
  186. // Parameters:
  187. //     pClient - Pointer to MDI tabbed client
  188. //     nID - Specifies the object's child-window ID.
  189. //     nIndex  - Index to add.
  190. //-----------------------------------------------------------------------
  191. void AddCommand(CXTPTabClientWnd* pClient, UINT nID, int& nIndex);
  192. private:
  193. DECLARE_XTP_CONTROL(CXTPControlWorkspaceActions)
  194. };
  195. //===========================================================================
  196. // Summary:
  197. //     CXTPControlToolbars is a CXTPControlButton derived class.
  198. //     It is used internally to create toolbars list items.
  199. //===========================================================================
  200. class _XTP_EXT_CLASS CXTPControlToolbars : public CXTPControlButton
  201. {
  202. public:
  203. //-----------------------------------------------------------------------
  204. // Summary:
  205. //     Constructs a CXTPControlToolbars object
  206. //-----------------------------------------------------------------------
  207. CXTPControlToolbars();
  208. //-----------------------------------------------------------------------
  209. // Summary:
  210. //     Represents single toolbar item.
  211. //-----------------------------------------------------------------------
  212. class CXTPControlToolbar : public CXTPControlButton
  213. {
  214. //----------------------------------------------------------------------
  215. // Summary:
  216. //     This method is called when the control is executed.
  217. //----------------------------------------------------------------------
  218. virtual void OnExecute();
  219. };
  220. //-----------------------------------------------------------------------
  221. // Summary:
  222. //     Creates a list of toolbars for the CommandBars Context Menu.
  223. // Parameters:
  224. //     pPopupBar     - Points to a CXTPCommandBar object
  225. //     nInsert       - Position to start inserting items in the context menu.
  226. //     nID           - ID to assign the menu items in the context menu
  227. //     bAddCustomize - TRUE to add the "Customize..." option at the bottom of the
  228. //                     menu that allows the Toolbar Customization dialog to be opened.
  229. //     bBeginGroup   - TRUE to start new group.
  230. // Remarks:
  231. //      This is the context menu that appears when a toolbar is right-clicked,
  232. //      it lists all the toolbars and allows them to be hiddendisplayed.
  233. //-----------------------------------------------------------------------
  234. static void AFX_CDECL CreateToolbarMenu(CXTPCommandBar* pPopupBar, int nInsert, int nID, BOOL bAddCustomize, BOOL bBeginGroup = FALSE);
  235. protected:
  236. //-----------------------------------------------------------------------
  237. // Summary:
  238. //     This method is called before recalculating the parent command
  239. //     bar size to calculate the dimensions of the control.
  240. // Parameters:
  241. //     dwMode - Flags used to determine the height and width of the
  242. //              dynamic command bar. See Remarks section for a list of
  243. //              values.
  244. // Remarks:
  245. //     The following predefined flags are used to determine the height and
  246. //     width of the dynamic command bar. Use the bitwise-OR (|) operator to
  247. //     combine the flags.<p/>
  248. //
  249. //     * <b>LM_STRETCH</b> Indicates whether the command bar should be
  250. //                stretched to the size of the frame. Set if the bar is
  251. //                not a docking bar (not available for docking). Not set
  252. //                when the bar is docked or floating (available for
  253. //                docking). If set, LM_STRETCH returns dimensions based
  254. //                on the LM_HORZ state. LM_STRETCH works similarly to
  255. //                the the bStretch parameter used in CalcFixedLayout;
  256. //                see that member function for more information about
  257. //                the relationship between stretching and orientation.
  258. //     * <b>LM_HORZ</b> Indicates that the bar is horizontally or
  259. //                vertically oriented. Set if the bar is horizontally
  260. //                oriented, and if it is vertically oriented, it is not
  261. //                set. LM_HORZ works similarly to the the bHorz
  262. //                parameter used in CalcFixedLayout; see that member
  263. //                function for more information about the relationship
  264. //                between stretching and orientation.
  265. //     * <b>LM_MRUWIDTH</b> Most Recently Used Dynamic Width. Uses the
  266. //                remembered most recently used width.
  267. //     * <b>LM_HORZDOCK</b> Horizontal Docked Dimensions. Returns the
  268. //                dynamic size with the largest width.
  269. //     * <b>LM_VERTDOCK</b> Vertical Docked Dimensions. Returns the dynamic
  270. //                size with the largest height.
  271. //     * <b>LM_COMMIT</b> Resets LM_MRUWIDTH to current width of
  272. //                floating command bar.
  273. //
  274. //     The framework calls this member function to calculate the dimensions
  275. //     of a dynamic command bar.<p/>
  276. //
  277. //     Override this member function to provide your own layout in classes
  278. //     you derive from CXTPControl. XTP classes derived from CXTPControl,
  279. //     such as CXTPControlComboBox, override this member function to provide
  280. //     their own implementation.
  281. // See Also:
  282. //     CXTPControlComboBox, CXTPControlCustom, CXTPControlEdit,
  283. //     CXTPControlWindowList, CXTPControlWorkspaceActions, CXTPControl,
  284. //     CXTPControlOleItems, CXTPControlRecentFileList, CXTPControlSelector,
  285. //     CXTPControlListBox
  286. //-----------------------------------------------------------------------
  287. virtual void OnCalcDynamicSize(DWORD dwMode);
  288. //-----------------------------------------------------------------------
  289. // Summary:
  290. //     Call this member to check if the user can drop the control.
  291. // Parameters:
  292. //     pCommandBar - Points to a CXTPCommandBar object
  293. //     point       - Mouse position.
  294. //     dropEffect  - DROPEFFECT enumerator.
  295. // Returns:
  296. //     TRUE if successful, otherwise returns FALSE
  297. //-----------------------------------------------------------------------
  298. virtual BOOL IsCustomizeDragOverAvail(CXTPCommandBar* pCommandBar, CPoint point, DROPEFFECT& dropEffect);
  299. private:
  300. DECLARE_XTP_CONTROL(CXTPControlToolbars)
  301. };
  302. //===========================================================================
  303. // Summary:
  304. //     CXTPControlOleItems is a CXTPControlButton derived class.
  305. //     It is used internally to create ole items.
  306. //===========================================================================
  307. class _XTP_EXT_CLASS CXTPControlOleItems : public CXTPControlButton
  308. {
  309. protected:
  310. //-----------------------------------------------------------------------
  311. // Summary:
  312. //     This method is called before recalculating the parent command
  313. //     bar size to calculate the dimensions of the control.
  314. // Parameters:
  315. //     dwMode - Flags used to determine the height and width of the
  316. //              dynamic command bar. See Remarks section for a list of
  317. //              values.
  318. // Remarks:
  319. //     The following predefined flags are used to determine the height and
  320. //     width of the dynamic command bar. Use the bitwise-OR (|) operator to
  321. //     combine the flags.<p/>
  322. //
  323. //     * <b>LM_STRETCH</b> Indicates whether the command bar should be
  324. //                stretched to the size of the frame. Set if the bar is
  325. //                not a docking bar (not available for docking). Not set
  326. //                when the bar is docked or floating (available for
  327. //                docking). If set, LM_STRETCH returns dimensions based
  328. //                on the LM_HORZ state. LM_STRETCH works similarly to
  329. //                the the bStretch parameter used in CalcFixedLayout;
  330. //                see that member function for more information about
  331. //                the relationship between stretching and orientation.
  332. //     * <b>LM_HORZ</b> Indicates that the bar is horizontally or
  333. //                vertically oriented. Set if the bar is horizontally
  334. //                oriented, and if it is vertically oriented, it is not
  335. //                set. LM_HORZ works similarly to the the bHorz
  336. //                parameter used in CalcFixedLayout; see that member
  337. //                function for more information about the relationship
  338. //                between stretching and orientation.
  339. //     * <b>LM_MRUWIDTH</b> Most Recently Used Dynamic Width. Uses the
  340. //                remembered most recently used width.
  341. //     * <b>LM_HORZDOCK</b> Horizontal Docked Dimensions. Returns the
  342. //                dynamic size with the largest width.
  343. //     * <b>LM_VERTDOCK</b> Vertical Docked Dimensions. Returns the dynamic
  344. //                size with the largest height.
  345. //     * <b>LM_COMMIT</b> Resets LM_MRUWIDTH to current width of
  346. //                floating command bar.
  347. //
  348. //     The framework calls this member function to calculate the dimensions
  349. //     of a dynamic command bar.<p/>
  350. //
  351. //     Override this member function to provide your own layout in classes
  352. //     you derive from CXTPControl. XTP classes derived from CXTPControl,
  353. //     such as CXTPControlComboBox, override this member function to provide
  354. //     their own implementation.
  355. // See Also:
  356. //     CXTPControlComboBox, CXTPControlCustom, CXTPControlEdit,
  357. //     CXTPControlWindowList, CXTPControlWorkspaceActions, CXTPControlToolbars,
  358. //     CXTPControl, CXTPControlRecentFileList, CXTPControlSelector,
  359. //     CXTPControlListBox
  360. //-----------------------------------------------------------------------
  361. virtual void OnCalcDynamicSize(DWORD dwMode);
  362. //-----------------------------------------------------------------------
  363. // Summary:
  364. //     Call this member to check if the user can drop the control.
  365. // Parameters:
  366. //     pCommandBar - Points to a CXTPCommandBar object
  367. //     point - Mouse position.
  368. //     dropEffect - DROPEFFECT enumerator.
  369. // Returns:
  370. //     TRUE if successful, otherwise returns FALSE
  371. //-----------------------------------------------------------------------
  372. virtual BOOL IsCustomizeDragOverAvail(CXTPCommandBar* pCommandBar, CPoint point, DROPEFFECT& dropEffect);
  373. private:
  374. DECLARE_XTP_CONTROL(CXTPControlOleItems)
  375. };
  376. //===========================================================================
  377. // Summary:
  378. //     CXTPControlRecentFileList is a CXTPControlButton derived class.
  379. //     It is used internally to create recent items list.
  380. //===========================================================================
  381. class _XTP_EXT_CLASS CXTPControlRecentFileList : public CXTPControlButton
  382. {
  383. protected:
  384. //-----------------------------------------------------------------------
  385. // Summary:
  386. //     This method is called before recalculating the parent command
  387. //     bar size to calculate the dimensions of the control.
  388. // Parameters:
  389. //     dwMode - Flags used to determine the height and width of the
  390. //              dynamic command bar. See Remarks section for a list of
  391. //              values.
  392. // Remarks:
  393. //     The following predefined flags are used to determine the height and
  394. //     width of the dynamic command bar. Use the bitwise-OR (|) operator to
  395. //     combine the flags.<p/>
  396. //
  397. //     * <b>LM_STRETCH</b> Indicates whether the command bar should be
  398. //                stretched to the size of the frame. Set if the bar is
  399. //                not a docking bar (not available for docking). Not set
  400. //                when the bar is docked or floating (available for
  401. //                docking). If set, LM_STRETCH returns dimensions based
  402. //                on the LM_HORZ state. LM_STRETCH works similarly to
  403. //                the the bStretch parameter used in CalcFixedLayout;
  404. //                see that member function for more information about
  405. //                the relationship between stretching and orientation.
  406. //     * <b>LM_HORZ</b> Indicates that the bar is horizontally or
  407. //                vertically oriented. Set if the bar is horizontally
  408. //                oriented, and if it is vertically oriented, it is not
  409. //                set. LM_HORZ works similarly to the the bHorz
  410. //                parameter used in CalcFixedLayout; see that member
  411. //                function for more information about the relationship
  412. //                between stretching and orientation.
  413. //     * <b>LM_MRUWIDTH</b> Most Recently Used Dynamic Width. Uses the
  414. //                remembered most recently used width.
  415. //     * <b>LM_HORZDOCK</b> Horizontal Docked Dimensions. Returns the
  416. //                dynamic size with the largest width.
  417. //     * <b>LM_VERTDOCK</b> Vertical Docked Dimensions. Returns the dynamic
  418. //                size with the largest height.
  419. //     * <b>LM_COMMIT</b> Resets LM_MRUWIDTH to current width of
  420. //                floating command bar.
  421. //
  422. //     The framework calls this member function to calculate the dimensions
  423. //     of a dynamic command bar.<p/>
  424. //
  425. //     Override this member function to provide your own layout in classes
  426. //     you derive from CXTPControl. XTP classes derived from CXTPControl,
  427. //     such as CXTPControlComboBox, override this member function to provide
  428. //     their own implementation.
  429. // See Also:
  430. //     CXTPControlComboBox, CXTPControlCustom, CXTPControlEdit,
  431. //     CXTPControlWindowList, CXTPControlWorkspaceActions, CXTPControlToolbars,
  432. //     CXTPControlOleItems, CXTPControl, CXTPControlSelector,
  433. //     CXTPControlListBox
  434. //-----------------------------------------------------------------------
  435. virtual void OnCalcDynamicSize(DWORD dwMode);
  436. //-----------------------------------------------------------------------
  437. // Summary:
  438. //     Call this member to check if the user can drop the control.
  439. // Parameters:
  440. //     pCommandBar - Points to a CXTPCommandBar object
  441. //     point - Mouse position.
  442. //     dropEffect - DROPEFFECT enumerator.
  443. // Returns:
  444. //     TRUE if successful, otherwise returns FALSE
  445. //-----------------------------------------------------------------------
  446. virtual BOOL IsCustomizeDragOverAvail(CXTPCommandBar* pCommandBar, CPoint point, DROPEFFECT& dropEffect);
  447. protected:
  448. //-----------------------------------------------------------------------
  449. // Summary:
  450. //     Returns pointer to recent file list collection
  451. // Returns:
  452. //     Pointer to recent file list collection
  453. //-----------------------------------------------------------------------
  454. virtual CRecentFileList* GetRecentFileList();
  455. //-----------------------------------------------------------------------
  456. // Summary:
  457. //     Returns ID_FILE_MRU_FILE1.
  458. //-----------------------------------------------------------------------
  459. virtual int GetFirstMruID();
  460. private:
  461. DECLARE_XTP_CONTROL(CXTPControlRecentFileList)
  462. };
  463. //-----------------------------------------------------------------------
  464. // Summary:
  465. //     XTP_SLN_SELCHANGE is sent to the parent commandbar when the
  466. //     number of selected items has changed in the control selector.
  467. // Remarks:
  468. //     The number of selected items changes as the mouse is moved
  469. //     over the controls in the control selector.
  470. //
  471. //           XTP_SLN_SELCHANGE is sent in CXTPControlSelector::SetItemsActive.
  472. // Example:
  473. //     Here is an example of how an application would process the XTP_LBN_SELCHANGE
  474. //     message.
  475. // <code>
  476. // BEGIN_MESSAGE_MAP(CExtendedControlsView, CEditView)
  477. //     //{{AFX_MSG_MAP(CExtendedControlsView)
  478. //     ON_NOTIFY(XTP_SLN_SELCHANGE, ID_INSERT_COLUMNS, OnColumnsSelChange)
  479. //     //}}AFX_MSG_MAP
  480. // END_MESSAGE_MAP()
  481. //
  482. // void CExtendedControlsView::OnColumnsSelChange(NMHDR* pNMHDR, LRESULT* pRes)
  483. // {
  484. //     ASSERT(pNMHDR != NULL);
  485. //     ASSERT(pRes != NULL);
  486. //
  487. //     CControlColumns* pControlColumns = DYNAMIC_DOWNCAST(CControlColumns,
  488. //         ((NMXTPCONTROL*)pNMHDR)->pControl);
  489. //     if (pControlColumns)
  490. //     {
  491. //
  492. //         CXTPControlStatic* pInfo = FindInfoControl(pControlColumns);
  493. //         if (pInfo)
  494. //         {
  495. //             int nCount = pControlColumns->m_szItemsActive.cx;
  496. //
  497. //             CString str = _T("Cancel");
  498. //             if (nCount != 0)
  499. //             {
  500. //                 str.Format(_T("%i Columns"), nCount);
  501. //             }
  502. //
  503. //             pInfo->SetWidth(pControlColumns->m_szItem.cx *
  504. //                 pControlColumns->m_szItemsVisible.cx);
  505. //
  506. //
  507. //             pInfo->SetCaption(str);
  508. //             pInfo->DelayRedrawParent();
  509. //         }
  510. //
  511. //         *pRes = 1;
  512. //     }
  513. // }
  514. // </code>
  515. // See Also:
  516. //     CXTPControlSelector::SetItemsActive
  517. //-----------------------------------------------------------------------
  518. const UINT XTP_SLN_SELCHANGE    = 0x1006;
  519. //===========================================================================
  520. // Summary:
  521. //     CXTPControlSelector is a CXTPControl derived class that represents
  522. //     a control selector.
  523. // Remarks:
  524. //     A control selector is an x by y grid of controls of which can be
  525. //     selected by the user.  This control is like the "Insert Table" and
  526. //     "Insert Column" controls seen in Microsoft Word.
  527. //
  528. //          When the control selector is created, m_szItemsCount holds the number
  529. //          items that will initially be shown.  By clicking and dragging inside
  530. //          the control selector, up to m_szItemsMax items can be shown.  For example,
  531. //          if m_szItemsCount = CSize(5, 4) and m_szItemsMax = CSize(12, 12), then
  532. //          the control selector will always display a 5x4 grid of items unless the
  533. //          mouse is clicked and dragged to expand the grid up to 12x12.
  534. //
  535. //          The size of the items is set by m_szItem, all items in the grid will
  536. //          be sized according to m_szItem.
  537. //
  538. //          The current number of active items (highlighted items) is stored in
  539. //          m_szItemsActive.  OnLButtonUp will store the number of selected items
  540. //          in m_szResult.
  541. //
  542. //          When the number of selected (activehighlighted) items changes,
  543. //          XTP_SLN_SELCHANGE is send in a message to the parent commandbar.  The
  544. //          message is sent while in the SetItemsActive function.
  545. //
  546. //          The Office 2003 GUI sample illustrates how to use this class.
  547. //===========================================================================
  548. class _XTP_EXT_CLASS CXTPControlSelector : public CXTPControl
  549. {
  550. DECLARE_XTP_CONTROL(CXTPControlSelector)
  551. public:
  552. //-------------------------------------------------------------------------
  553. // Summary:
  554. //     Constructs a CXTPControlSelector object.
  555. //-------------------------------------------------------------------------
  556. CXTPControlSelector();
  557. protected:
  558. //-----------------------------------------------------------------------
  559. // Summary:
  560. //     This method is called to determine the size of the control.
  561. // Parameters:
  562. //     pDC - Pointer to a valid device context
  563. // Returns:
  564. //     Size of the control.
  565. //-----------------------------------------------------------------------
  566. CSize GetSize(CDC* pDC);
  567. //-----------------------------------------------------------------------
  568. // Summary:
  569. //     This method is called to draw the control.
  570. // Parameters:
  571. //     pDC - Pointer to a valid device context.
  572. //-----------------------------------------------------------------------
  573. void Draw(CDC* pDC);
  574. //-----------------------------------------------------------------------
  575. // Summary:
  576. //     This member is called when the mouse cursor moves.
  577. // Parameters:
  578. //     point - Specifies the x- and y-coordinate of the cursor.
  579. //-----------------------------------------------------------------------
  580. void OnMouseMove(CPoint point);
  581. //-----------------------------------------------------------------------
  582. // Summary:
  583. //     This method is called when the control becomes selected.
  584. // Parameters:
  585. //     bSelected - TRUE if the control becomes selected.
  586. // Returns:
  587. //     TRUE if successful; otherwise returns FALSE
  588. //-----------------------------------------------------------------------
  589. BOOL OnSetSelected(int bSelected);
  590. //-----------------------------------------------------------------------
  591. // Summary:
  592. //     This member is called when the user releases the left mouse button.
  593. // Parameters:
  594. //     point - Specifies the x- and y-coordinate of the cursor.
  595. //-----------------------------------------------------------------------
  596. void OnLButtonUp(CPoint point);
  597. //-----------------------------------------------------------------------
  598. // Summary:
  599. //     This method is called before recalculating the parent command
  600. //     bar size to calculate the dimensions of the control.
  601. // Parameters:
  602. //     dwMode - Flags used to determine the height and width of the
  603. //              dynamic command bar. See Remarks section for a list of
  604. //              values.
  605. // Remarks:
  606. //     The following predefined flags are used to determine the height and
  607. //     width of the dynamic command bar. Use the bitwise-OR (|) operator to
  608. //     combine the flags.<p/>
  609. //
  610. //     * <b>LM_STRETCH</b> Indicates whether the command bar should be
  611. //                stretched to the size of the frame. Set if the bar is
  612. //                not a docking bar (not available for docking). Not set
  613. //                when the bar is docked or floating (available for
  614. //                docking). If set, LM_STRETCH returns dimensions based
  615. //                on the LM_HORZ state. LM_STRETCH works similarly to
  616. //                the the bStretch parameter used in CalcFixedLayout;
  617. //                see that member function for more information about
  618. //                the relationship between stretching and orientation.
  619. //     * <b>LM_HORZ</b> Indicates that the bar is horizontally or
  620. //                vertically oriented. Set if the bar is horizontally
  621. //                oriented, and if it is vertically oriented, it is not
  622. //                set. LM_HORZ works similarly to the the bHorz
  623. //                parameter used in CalcFixedLayout; see that member
  624. //                function for more information about the relationship
  625. //                between stretching and orientation.
  626. //     * <b>LM_MRUWIDTH</b> Most Recently Used Dynamic Width. Uses the
  627. //                remembered most recently used width.
  628. //     * <b>LM_HORZDOCK</b> Horizontal Docked Dimensions. Returns the
  629. //                dynamic size with the largest width.
  630. //     * <b>LM_VERTDOCK</b> Vertical Docked Dimensions. Returns the dynamic
  631. //                size with the largest height.
  632. //     * <b>LM_COMMIT</b> Resets LM_MRUWIDTH to current width of
  633. //                floating command bar.
  634. //
  635. //     The framework calls this member function to calculate the dimensions
  636. //     of a dynamic command bar.<p/>
  637. //
  638. //     Override this member function to provide your own layout in classes
  639. //     you derive from CXTPControl. XTP classes derived from CXTPControl,
  640. //     such as CXTPControlComboBox, override this member function to provide
  641. //     their own implementation.
  642. // See Also:
  643. //     CXTPControlComboBox, CXTPControlCustom, CXTPControlEdit,
  644. //     CXTPControlWindowList, CXTPControlWorkspaceActions, CXTPControlToolbars,
  645. //     CXTPControlOleItems, CXTPControlRecentFileList, CXTPControl,
  646. //     CXTPControlListBox
  647. //-----------------------------------------------------------------------
  648. virtual void OnCalcDynamicSize(DWORD dwMode);
  649. //-----------------------------------------------------------------------
  650. // Summary:
  651. //     This method is called to copy the control.
  652. // Parameters:
  653. //     pControl - Points to a source CXTPControl object
  654. //     bRecursive - TRUE to copy recursively.
  655. //-----------------------------------------------------------------------
  656. void Copy(CXTPControl* pControl, BOOL bRecursive = FALSE);
  657. //-----------------------------------------------------------------------
  658. // Summary:
  659. //     Reads or writes this object from or to an archive.
  660. // Parameters:
  661. //     pPX - A CXTPPropExchange object to serialize to or from.
  662. //----------------------------------------------------------------------
  663. void DoPropExchange(CXTPPropExchange* pPX);
  664. protected:
  665. //-----------------------------------------------------------------------
  666. // Summary:
  667. //     This member is called to set the number of active items.
  668. // Parameters:
  669. //     szActive - Number of active items (on screen).  If m_szItemsActive
  670. //                is not equal to szActive, then SetItemsActive will
  671. //                set m_szItemsActive = szActive.
  672. //     bNotify  - TRUE to send XTP_SLN_SELCHANGE message to parent
  673. //                commandbar even if m_szItemsActive = szActive.  This
  674. //                is necessary when the number of items has changed and
  675. //                m_szItemsActive = szActive, which occurs when the mouse
  676. //                is clicked and dragged to select items more items than
  677. //                are currently visible.
  678. // Remarks:
  679. //     Active items are the items that are currently highlighted in the
  680. //     control selector.
  681. // See Also: XTP_SLN_SELCHANGE
  682. //-----------------------------------------------------------------------
  683. void SetItemsActive(CSize szActive, BOOL bNotify = FALSE);
  684. //-----------------------------------------------------------------------
  685. // Summary:
  686. //     Them member is called when a control item in the control
  687. //     selector is drawn.
  688. // Parameters:
  689. //     pDC     - Pointer to a valid device context.
  690. //     rcItem  - Bounding rectangle of item being drawn.
  691. //     clrText - Color to use when drawing.
  692. // Remarks:
  693. //     Override this member to draw your own custom control.  In
  694. //     the Office 2003 GUI sample, this is used to draw the column
  695. //     lines in the column selector control.
  696. //-----------------------------------------------------------------------
  697. virtual void OnDrawItem(CDC* pDC, CRect rcItem, COLORREF clrText);
  698. public:
  699. CSize m_szItemsCount;   // Number of items to draw in the control selector's view.  By clicking and dragging the mouse, the number of items drawn can be up to m_szItemsMax.
  700. CSize m_szItemsMax;     // Maximum number of items to draw in the control selector.
  701. CSize m_szItemsActive;  // Number of items currently "active", this is current number of items that are highlighted as the mouse moves across the control selector.
  702. CSize m_szItem;         // Size of the items.
  703. CSize m_szResult;       // Number of items that were selected from the control selector.
  704. CSize m_szItemsVisible; // Number of items currently visible. Item range is from m_szItemsCount to m_szItemsMax.
  705. private:
  706. BOOL  m_bLockUpdate;
  707. };
  708. //===========================================================================
  709. // Summary:
  710. //     CXTPControlLabel is a CXTPControl derived class.
  711. //     It represents a label control.
  712. //===========================================================================
  713. class _XTP_EXT_CLASS CXTPControlLabel : public CXTPControl
  714. {
  715. DECLARE_XTP_CONTROL(CXTPControlLabel)
  716. public:
  717. //-------------------------------------------------------------------------
  718. // Summary:
  719. //     Constructs a CXTPControlLabel Object.
  720. //-------------------------------------------------------------------------
  721. CXTPControlLabel()
  722. {
  723. m_dwFlags = xtpFlagSkipFocus | xtpFlagNoMovable | xtpFlagManualUpdate;
  724. m_controlType = xtpControlLabel;
  725. }
  726. //-----------------------------------------------------------------------
  727. // Summary:
  728. //     Call this member to get the state of the control.
  729. // Returns:
  730. //     TRUE if the control is selected; otherwise FALSE.  Controls of
  731. //     type CXTPControlLabel can not receive focus so this will always
  732. //     return FALSE.
  733. //-----------------------------------------------------------------------
  734. int GetSelected() const {
  735. return FALSE;
  736. }
  737. //----------------------------------------------------------------------
  738. // Summary:
  739. //     This method is called when the user clicks the control.
  740. // Parameters:
  741. //     bKeyboard - TRUE if the control is selected using the keyboard.
  742. //     pt        - Mouse cursor position.
  743. //----------------------------------------------------------------------
  744. virtual void OnClick(BOOL bKeyboard = FALSE, CPoint pt = CPoint(0, 0));
  745. };
  746. //===========================================================================
  747. // Summary:
  748. //     CXTPControlCheckBox is a CXTPControlButton derived class.
  749. //     It represents a checkbox control.
  750. //===========================================================================
  751. class _XTP_EXT_CLASS CXTPControlCheckBox : public CXTPControlButton
  752. {
  753. DECLARE_XTP_CONTROL(CXTPControlCheckBox)
  754. public:
  755. //-------------------------------------------------------------------------
  756. // Summary:
  757. //     Constructs a CXTPControlCheckBox Object.
  758. //-------------------------------------------------------------------------
  759. CXTPControlCheckBox();
  760. };
  761. //===========================================================================
  762. // Summary:
  763. //     CXTPControlRadioButton is a CXTPControlButton derived class.
  764. //     It represents a radio button control.
  765. //===========================================================================
  766. class _XTP_EXT_CLASS CXTPControlRadioButton : public CXTPControlButton
  767. {
  768. DECLARE_XTP_CONTROL(CXTPControlRadioButton)
  769. public:
  770. //-------------------------------------------------------------------------
  771. // Summary:
  772. //     Constructs a CXTPControlRadioButton Object.
  773. //-------------------------------------------------------------------------
  774. CXTPControlRadioButton();
  775. };
  776. //===========================================================================
  777. // Summary:
  778. //     CXTPControlMarkupLabel is a CXTPControlLabel derived class.
  779. //     It can be used to draw markup text
  780. //===========================================================================
  781. class _XTP_EXT_CLASS  CXTPControlMarkupLabel : public CXTPControlLabel
  782. {
  783. DECLARE_XTP_CONTROL(CXTPControlMarkupLabel);
  784. public:
  785. //-------------------------------------------------------------------------
  786. // Summary:
  787. //     Constructs a CXTPControlMarkupLabel Object.
  788. //-------------------------------------------------------------------------
  789. CXTPControlMarkupLabel();
  790. ~CXTPControlMarkupLabel();
  791. protected:
  792. void OnCaptionChanged();
  793. protected:
  794. //----------------------------------------------------------------------
  795. // Summary:
  796. //     This method is called to determine the size of the control.
  797. // Parameters:
  798. //     pDC - Pointer to a valid device context
  799. // Returns:
  800. //     Size of the control.
  801. //----------------------------------------------------------------------
  802. virtual CSize GetSize(CDC* pDC);
  803. //----------------------------------------------------------------------
  804. // Summary:
  805. //     This method is called to draw the control.
  806. // Parameters:
  807. //     pDC - Pointer to a valid device context.
  808. //----------------------------------------------------------------------
  809. virtual void Draw(CDC* pDC);
  810. protected:
  811. CXTPMarkupUIElement* m_pMarkupUIElement;
  812. };
  813. //===========================================================================
  814. // Summary:
  815. //     CXTPControlHyperlink is a CXTPControl derived class.
  816. //     It can be used to add hyperlink text.
  817. //===========================================================================
  818. class _XTP_EXT_CLASS CXTPControlHyperlink : public CXTPControl
  819. {
  820. DECLARE_XTP_CONTROL(CXTPControlHyperlink);
  821. public:
  822. CXTPControlHyperlink();
  823. protected:
  824. //----------------------------------------------------------------------
  825. // Summary:
  826. //     This method is called to determine the size of the control.
  827. // Parameters:
  828. //     pDC - Pointer to a valid device context
  829. // Returns:
  830. //     Size of the control.
  831. //----------------------------------------------------------------------
  832. virtual CSize GetSize(CDC* pDC);
  833. //----------------------------------------------------------------------
  834. // Summary:
  835. //     This method is called to draw the control.
  836. // Parameters:
  837. //     pDC - Pointer to a valid device context.
  838. //----------------------------------------------------------------------
  839. virtual void Draw(CDC* pDC);
  840. //----------------------------------------------------------------------
  841. // Summary:
  842. //     This method is called when the user clicks the control.
  843. // Parameters:
  844. //     bKeyboard - TRUE if the control is selected using the keyboard.
  845. //     pt        - Mouse cursor position.
  846. //----------------------------------------------------------------------
  847. virtual void OnClick(BOOL bKeyboard = FALSE, CPoint pt = CPoint(0, 0));
  848. void OnExecute();
  849. void OnMouseMove(CPoint point);
  850. protected:
  851. HCURSOR m_hCursor;
  852. };
  853. //===========================================================================
  854. // Summary:
  855. //     CXTPControlBitmap is a CXTPControlLabel derived class.
  856. //     It can be used to add bitmap to toolbar.
  857. //===========================================================================
  858. class _XTP_EXT_CLASS CXTPControlBitmap : public CXTPControlLabel
  859. {
  860. DECLARE_XTP_CONTROL(CXTPControlBitmap);
  861. public:
  862. CXTPControlBitmap();
  863. protected:
  864. //----------------------------------------------------------------------
  865. // Summary:
  866. //     This method is called to determine the size of the control.
  867. // Parameters:
  868. //     pDC - Pointer to a valid device context
  869. // Returns:
  870. //     Size of the control.
  871. //----------------------------------------------------------------------
  872. virtual CSize GetSize(CDC* pDC);
  873. //----------------------------------------------------------------------
  874. // Summary:
  875. //     This method is called to draw the control.
  876. // Parameters:
  877. //     pDC - Pointer to a valid device context.
  878. //----------------------------------------------------------------------
  879. virtual void Draw(CDC* pDC);
  880. };
  881. #endif // #if !defined(__XTPCONTROLEXT_H__)