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

对话框与窗口

开发平台:

Visual C++

  1. // XTPControlListBox.h : interface for the CXTPControlListBox 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(__XTPCONTROLLISTBOX_H__)
  22. #define __XTPCONTROLLISTBOX_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. //-----------------------------------------------------------------------
  28. // Summary:
  29. //     The XTP_LBN_SELCHANGE is sent to active view when the selection of CXTPControlListBox
  30. //     is changed
  31. // Example:
  32. //     Here is an example of how an application would process the XTP_LBN_SELCHANGE
  33. //     message.
  34. // <code>
  35. // BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
  36. //     //{{AFX_MSG_MAP(CMainFrame)
  37. //     ON_NOTIFY(XTP_LBN_SELCHANGE, ID_EDIT_UNDO, OnListBoxControlSelChange)
  38. //     //}}AFX_MSG_MAP
  39. // END_MESSAGE_MAP()
  40. //
  41. // void CMainFrame::OnListBoxControlSelChange(NMHDR* pNMHDR, LRESULT* pResult)
  42. // {
  43. //     CXTPControlListBox* pControlListBox = DYNAMIC_DOWNCAST(CXTPControlListBox, ((NMXTPCONTROL*)pNMHDR)->pControl);
  44. //     if (pControlListBox)
  45. //     {
  46. //          *pResult = 1;
  47. //     }
  48. // }
  49. // </code>
  50. // See Also: CXTPControlListBox, XTP_LBN_POPUP
  51. //-----------------------------------------------------------------------
  52. const UINT XTP_LBN_SELCHANGE   = 0x1003;
  53. //-----------------------------------------------------------------------
  54. // Summary:
  55. //     The XTP_LBN_POPUP is sent to active view when the CXTPControlListBox is about to become visible.
  56. // Example:
  57. //     Here is an example of how an application would process the XTP_LBN_POPUP
  58. //     message.
  59. // <code>
  60. // BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
  61. //     //{{AFX_MSG_MAP(CMainFrame)
  62. //     ON_NOTIFY(XTP_LBN_POPUP, ID_EDIT_UNDO, OnListBoxControlPopup)
  63. //     //}}AFX_MSG_MAP
  64. // END_MESSAGE_MAP()
  65. //
  66. // void CMainFrame::OnListBoxControlPopup(NMHDR* pNMHDR, LRESULT* pResult)
  67. // {
  68. //     CXTPControlListBox* pControlListBox = DYNAMIC_DOWNCAST(CXTPControlListBox, ((NMXTPCONTROL*)pNMHDR)->pControl);
  69. //     if (pControlListBox)
  70. //     {
  71. //          *pResult = 1;
  72. //     }
  73. // }
  74. // </code>
  75. // See Also: CXTPControlListBox, XTP_LBN_SELCHANGE
  76. //-----------------------------------------------------------------------
  77. const UINT XTP_LBN_POPUP    = 0x1004;
  78. //{{AFX_CODEJOCK_PRIVATE
  79. class CXTPControlListBoxCtrl;
  80. //}}AFX_CODEJOCK_PRIVATE
  81. //===========================================================================
  82. // Summary:
  83. //     CXTPControlComboBox is a CXTPControl derived class.
  84. //     It represents a list box control.
  85. //===========================================================================
  86. class _XTP_EXT_CLASS CXTPControlListBox : public CXTPControl
  87. {
  88. public:
  89. //-----------------------------------------------------------------------
  90. // Summary:
  91. //     Constructs a CXTPControlListBox object
  92. //-----------------------------------------------------------------------
  93. CXTPControlListBox();
  94. //-----------------------------------------------------------------------
  95. // Summary:
  96. //     Destroys a CXTPControlListBox object, handles cleanup and deallocation
  97. //-----------------------------------------------------------------------
  98. virtual ~CXTPControlListBox();
  99. public:
  100. //-----------------------------------------------------------------------
  101. // Summary:
  102. //     Call this member to set the width of the control
  103. // Parameters:
  104. //     nWidth - The width of the control
  105. //-----------------------------------------------------------------------
  106. void SetWidth(int nWidth);
  107. //-----------------------------------------------------------------------
  108. // Summary:
  109. //     Call this member to set the total minimum and maximum lines.
  110. // Parameters:
  111. //     nMin - Minimum lines to be used.
  112. //     nMax - Maximum lines to be used
  113. //-----------------------------------------------------------------------
  114. void SetLinesMinMax(int nMin, int nMax);
  115. //-----------------------------------------------------------------------
  116. // Summary:
  117. //     Call this member to retrieve a pointer to the list control.
  118. // Returns:
  119. //     Retrieves list control.
  120. //-----------------------------------------------------------------------
  121. CListBox* GetListCtrl() const;
  122. //-----------------------------------------------------------------------
  123. // Summary:
  124. //     Call this member to set the multiple selection style of the
  125. //     control.
  126. // Parameters:
  127. //     bMultiplSel - TRUE to set multiple selection style.
  128. //-----------------------------------------------------------------------
  129. void SetMultiplSel(BOOL bMultiplSel);
  130. //-----------------------------------------------------------------------
  131. // Summary:
  132. //     Call this member to enable or disable the control.
  133. //     If the control does not have flags xtpFlagManualUpdate, you must call
  134. //     the Enable member of CCmdUI in the ON_UPDATE_COMMAND_UI handler.
  135. // Parameters:
  136. //     bEnabled - TRUE if the control is enabled.
  137. // See Also: GetEnabled, SetChecked
  138. //-----------------------------------------------------------------------
  139. virtual void SetEnabled(BOOL bEnabled);
  140. protected:
  141. //-----------------------------------------------------------------------
  142. // Summary:
  143. //     Call this member to set the bounding rectangle of the control.
  144. // Parameters:
  145. //     rcControl - Bounding rectangle of the control.
  146. //-----------------------------------------------------------------------
  147. virtual void SetRect(CRect rcControl);
  148. //-----------------------------------------------------------------------
  149. // Summary:
  150. //     This method is called to determine the size of the control.
  151. // Parameters:
  152. //     pDC - Pointer to a valid device context
  153. // Returns:
  154. //     Size of the control.
  155. //-----------------------------------------------------------------------
  156. virtual CSize GetSize(CDC* pDC);
  157. //-----------------------------------------------------------------------
  158. // Summary:
  159. //     This method is called to assign a parent command bar object.
  160. // Parameters:
  161. //     pParent - Points to a CXTPCommandBar object
  162. //-----------------------------------------------------------------------
  163. virtual void SetParent(CXTPCommandBar* pParent);
  164. //-----------------------------------------------------------------------
  165. // Summary:
  166. //     This method is called to draw the control.
  167. // Parameters:
  168. //     pDC - Pointer to a valid device context.
  169. //-----------------------------------------------------------------------
  170. virtual void Draw(CDC* pDC);
  171. //-----------------------------------------------------------------------
  172. // Summary:
  173. //     Call this member to get the focused state of the control.
  174. // Returns:
  175. //     TRUE if the control has focus; otherwise FALSE.
  176. //-----------------------------------------------------------------------
  177. virtual BOOL IsFocused() const;
  178. //-----------------------------------------------------------------------
  179. // Summary:
  180. //     The framework calls this member function when a non-system key
  181. //     is pressed.
  182. // Parameters:
  183. //     nChar - Specifies the virtual key code of the given key.
  184. //     lParam   - Specifies additional message-dependent information.
  185. // Returns:
  186. //     TRUE if key handled, otherwise returns FALSE
  187. //-----------------------------------------------------------------------
  188. virtual BOOL OnHookKeyDown(UINT nChar, LPARAM lParam);
  189. //-----------------------------------------------------------------------
  190. // Summary:
  191. //     This method is called when the control becomes selected.
  192. // Parameters:
  193. //     bSelected - TRUE if the control becomes selected.
  194. // Returns:
  195. //     TRUE if successful; otherwise returns FALSE
  196. //-----------------------------------------------------------------------
  197. virtual BOOL OnSetSelected(int bSelected);
  198. //-----------------------------------------------------------------------
  199. // Summary:
  200. //     This method is called when the user clicks the control.
  201. // Parameters:
  202. //     bKeyboard - TRUE if the control is selected using the keyboard.
  203. //     pt - Mouse cursor position.
  204. //-----------------------------------------------------------------------
  205. virtual void OnClick(BOOL bKeyboard = FALSE, CPoint pt = CPoint(0, 0));
  206. //-----------------------------------------------------------------------
  207. // Summary:
  208. //     This method is called before recalculating the parent command
  209. //     bar size to calculate the dimensions of the control.
  210. // Parameters:
  211. //     dwMode - Flags used to determine the height and width of the
  212. //              dynamic command bar. See Remarks section for a list of
  213. //              values.
  214. // Remarks:
  215. //     The following predefined flags are used to determine the height and
  216. //     width of the dynamic command bar. Use the bitwise-OR (|) operator to
  217. //     combine the flags.<p/>
  218. //
  219. //     * <b>LM_STRETCH</b> Indicates whether the command bar should be
  220. //                stretched to the size of the frame. Set if the bar is
  221. //                not a docking bar (not available for docking). Not set
  222. //                when the bar is docked or floating (available for
  223. //                docking). If set, LM_STRETCH returns dimensions based
  224. //                on the LM_HORZ state. LM_STRETCH works similarly to
  225. //                the the bStretch parameter used in CalcFixedLayout;
  226. //                see that member function for more information about
  227. //                the relationship between stretching and orientation.
  228. //     * <b>LM_HORZ</b> Indicates that the bar is horizontally or
  229. //                vertically oriented. Set if the bar is horizontally
  230. //                oriented, and if it is vertically oriented, it is not
  231. //                set. LM_HORZ works similarly to the the bHorz
  232. //                parameter used in CalcFixedLayout; see that member
  233. //                function for more information about the relationship
  234. //                between stretching and orientation.
  235. //     * <b>LM_MRUWIDTH</b> Most Recently Used Dynamic Width. Uses the
  236. //                remembered most recently used width.
  237. //     * <b>LM_HORZDOCK</b> Horizontal Docked Dimensions. Returns the
  238. //                dynamic size with the largest width.
  239. //     * <b>LM_VERTDOCK</b> Vertical Docked Dimensions. Returns the dynamic
  240. //                size with the largest height.
  241. //     * <b>LM_COMMIT</b> Resets LM_MRUWIDTH to current width of
  242. //                floating command bar.
  243. //
  244. //     The framework calls this member function to calculate the dimensions
  245. //     of a dynamic command bar.<p/>
  246. //
  247. //     Override this member function to provide your own layout in classes
  248. //     you derive from CXTPControl. XTP classes derived from CXTPControl,
  249. //     such as CXTPControlComboBox, override this member function to provide
  250. //     their own implementation.
  251. // See Also:
  252. //     CXTPControlComboBox, CXTPControlCustom, CXTPControlEdit,
  253. //     CXTPControlWindowList, CXTPControlWorkspaceActions, CXTPControlToolbars,
  254. //     CXTPControlOleItems, CXTPControlRecentFileList, CXTPControlSelector,
  255. //     CXTPControl
  256. //-----------------------------------------------------------------------
  257. virtual void OnCalcDynamicSize(DWORD dwMode);
  258. //-----------------------------------------------------------------------
  259. // Summary:
  260. //     This method is called to copy the control.
  261. // Parameters:
  262. //     pControl - Points to a source CXTPControl object
  263. //     bRecursive - TRUE to copy recursively.
  264. //-----------------------------------------------------------------------
  265. virtual void Copy(CXTPControl* pControl, BOOL bRecursive = FALSE);
  266. //-----------------------------------------------------------------------
  267. // Summary:
  268. //     Reads or writes this object from or to an archive.
  269. // Parameters:
  270. //     pPX - A CXTPPropExchange object to serialize to or from.
  271. //----------------------------------------------------------------------
  272. virtual void DoPropExchange(CXTPPropExchange* pPX);
  273. protected:
  274. CXTPControlListBoxCtrl* m_pListBox; // List box control.
  275. int          m_nListBoxLinesMin;    // Minimum lines.
  276. int          m_nListBoxLinesMax;    // Maximum lines.
  277. BOOL         m_bMultiplSel;         // Multiple selection style.
  278. BOOL         m_bMouseLocked;        // TRUE to lock mouse events.
  279. //{{AFX_CODEJOCK_PRIVATE
  280. DECLARE_XTP_CONTROL(CXTPControlListBox)
  281. //}}AFX_CODEJOCK_PRIVATE
  282. friend class CXTPControlListBoxCtrl;
  283. };
  284. //===========================================================================
  285. // Summary:
  286. //     CXTPControlStatic is a CXTPControl derived class.
  287. //     It represents a static text control.
  288. //===========================================================================
  289. class _XTP_EXT_CLASS CXTPControlStatic : public CXTPControl
  290. {
  291. public:
  292. //-----------------------------------------------------------------------
  293. // Summary:
  294. //     Constructs a CXTPControlStatic object
  295. //-----------------------------------------------------------------------
  296. CXTPControlStatic();
  297. public:
  298. //-----------------------------------------------------------------------
  299. // Summary:
  300. //     Call this member to set the width of the control
  301. // Parameters:
  302. //     nWidth - The width of the control
  303. //-----------------------------------------------------------------------
  304. void SetWidth(int nWidth);
  305. protected:
  306. //-----------------------------------------------------------------------
  307. // Summary:
  308. //     This method is called to determine the size of the control.
  309. // Parameters:
  310. //     pDC - Pointer to a valid device context
  311. // Returns:
  312. //     Size of the control.
  313. //-----------------------------------------------------------------------
  314. virtual CSize GetSize(CDC* pDC);
  315. //-----------------------------------------------------------------------
  316. // Summary:
  317. //     This method is called to draw the control.
  318. // Parameters:
  319. //     pDC - Pointer to a valid device context.
  320. //-----------------------------------------------------------------------
  321. virtual void Draw(CDC* pDC);
  322. //-----------------------------------------------------------------------
  323. // Summary:
  324. //     This method is called to copy the control.
  325. // Parameters:
  326. //     pControl - Points to a source CXTPControl object
  327. //     bRecursive - TRUE to copy recursively.
  328. //-----------------------------------------------------------------------
  329. virtual void Copy(CXTPControl* pControl, BOOL bRecursive = FALSE);
  330. //-----------------------------------------------------------------------
  331. // Summary:
  332. //     Reads or writes this object from or to an archive.
  333. // Parameters:
  334. //     pPX - A CXTPPropExchange object to serialize to or from.
  335. //----------------------------------------------------------------------
  336. virtual void DoPropExchange(CXTPPropExchange* pPX);
  337. private:
  338. DECLARE_XTP_CONTROL(CXTPControlStatic)
  339. };
  340. #endif // !defined(__XTPCONTROLLISTBOX_H__)