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

对话框与窗口

开发平台:

Visual C++

  1. // XTComboBoxEx.h : interface for the CXTComboBoxEx class.
  2. //
  3. // This file is a part of the XTREME CONTROLS 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(__XTCOMBOBOXEX_H__)
  22. #define __XTCOMBOBOXEX_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. //===========================================================================
  28. // Summary:
  29. //     The CXTComboBoxEx class is a CComboBox derived class. It extends the
  30. //     combo box control by providing support for image lists.
  31. // Remarks:
  32. //     By using CXTComboBoxEx
  33. //     to create combo box controls, you no longer need to implement your own
  34. //     image drawing code. Instead, use CXTComboBoxEx to access images from
  35. //     an image list.
  36. //===========================================================================
  37. class _XTP_EXT_CLASS CXTComboBoxEx : public CComboBox
  38. {
  39. DECLARE_DYNAMIC(CXTComboBoxEx)
  40. public:
  41. //-----------------------------------------------------------------------
  42. // Summary:
  43. //     Constructs a CXTComboBoxEx object
  44. //-----------------------------------------------------------------------
  45. CXTComboBoxEx();
  46. //-----------------------------------------------------------------------
  47. // Summary:
  48. //     Destroys a CXTComboBoxEx object, handles cleanup and deallocation
  49. //-----------------------------------------------------------------------
  50. virtual ~CXTComboBoxEx();
  51. public:
  52. //-----------------------------------------------------------------------
  53. // Summary:
  54. //     This member function creates the combo box and attaches it to the
  55. //     CXTComboBoxEx object.
  56. // Parameters:
  57. //     dwStyle    - Specifies the combination of combo box styles applied
  58. //                  to the combo box.
  59. //     rect       - A reference to a CRect object or RECT structure that
  60. //                  specifies the position and size of the combo box.
  61. //     pParentWnd - A pointer to a CWnd object that is the parent window
  62. //                  of the combo box (usually a CDialog). It must not
  63. //                  be NULL.
  64. //     nID        - Specifies the combo box's control ID.
  65. // Returns:
  66. //     Nonzero if the operation was successful, otherwise returns zero.
  67. //-----------------------------------------------------------------------
  68. BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  69. //{{AFX_CODEJOCK_PRIVATE
  70. #if _MSC_VER > 1200 //MFC 7.0
  71. using CComboBox::DeleteItem;
  72. #endif //MFC 7.0
  73. //}}AFX_CODEJOCK_PRIVATE
  74. //-----------------------------------------------------------------------
  75. // Summary:
  76. //     This member function removes an item from a ComboBoxEx control.
  77. // Parameters:
  78. //     iIndex - Zero-based index of the item to be removed.
  79. // Returns:
  80. //     The number of items remaining in the control. If 'iIndex' is
  81. //     invalid, the function returns CB_ERR.
  82. //-----------------------------------------------------------------------
  83. int DeleteItem(int iIndex);
  84. //-----------------------------------------------------------------------
  85. // Summary:
  86. //     This member function retrieves item information for a given
  87. //     ComboBoxEx item.
  88. // Parameters:
  89. //     pCBItem - A pointer to a COMBOBOXEXITEM structure that will
  90. //               receive the item information.
  91. // Returns:
  92. //     Nonzero if the operation was successful, otherwise returns zero.
  93. //-----------------------------------------------------------------------
  94. BOOL GetItem(COMBOBOXEXITEM* pCBItem);
  95. //-----------------------------------------------------------------------
  96. // Summary:
  97. //     This member function inserts a new item in a ComboBoxEx control.
  98. // Parameters:
  99. //     pCBItem - A pointer to a COMBOBOXEXITEM structure that will
  100. //               receive the item information.  This structure contains
  101. //               callback flag values for the item.
  102. //     iItem          - Item index.
  103. //     nStringID      - String resource.
  104. //     lpszItem       - Item string.
  105. //     iIndent        - Amount in pixels the image is to be indented.
  106. //     iImage         - Image index.
  107. //     iSelectedImage - Selected image index.
  108. //     mask           - Style mask.
  109. // Returns:
  110. //     The index at which the new item was inserted if successful;
  111. //     otherwise returns -1.
  112. //-----------------------------------------------------------------------
  113. int InsertItem(const COMBOBOXEXITEM* pCBItem);
  114. int InsertItem(int iItem, UINT nStringID, int iIndent = 0, int iImage = 0, int iSelectedImage = 0, UINT mask = CBEIF_TEXT | CBEIF_IMAGE | CBEIF_SELECTEDIMAGE | CBEIF_INDENT);// <combine CXTComboBoxEx::InsertItem@const COMBOBOXEXITEM*>
  115. int InsertItem(int iItem, LPCTSTR lpszItem, int iIndent = 0, int iImage = 0, int iSelectedImage = 0, UINT mask = CBEIF_TEXT | CBEIF_IMAGE | CBEIF_SELECTEDIMAGE | CBEIF_INDENT); // <combine CXTComboBoxEx::InsertItem@const COMBOBOXEXITEM*>
  116. //-----------------------------------------------------------------------
  117. // Summary:
  118. //     This member function sets the attributes for an item in a
  119. //     ComboBoxEx control.
  120. // Parameters:
  121. //     pCBItem - A pointer to a COMBOBOXEXITEM structure that will
  122. //               receive the item information.
  123. // Returns:
  124. //     Nonzero if the operation was successful, otherwise returns zero.
  125. //-----------------------------------------------------------------------
  126. BOOL SetItem(const COMBOBOXEXITEM* pCBItem);
  127. //-----------------------------------------------------------------------
  128. // Summary:
  129. //     This member function retrieves the extended styles control.
  130. // Returns:
  131. //     The DWORD value that contains the extended styles that are used for
  132. //     the combo box control.
  133. //-----------------------------------------------------------------------
  134. DWORD GetExtendedStyle() const;
  135. //-----------------------------------------------------------------------
  136. // Summary:
  137. //     This member function sets extended styles within a combo box control.
  138. // Parameters:
  139. //     dwExMask   - A DWORD value that indicates which styles in 'dwExStyles'
  140. //                  are to be affected. Only the extended styles in
  141. //                  'dwExMask' will be changed. All other styles will
  142. //                  be maintained as is. If this parameter is zero,
  143. //                  then all of the styles in 'dwExStyles' will be affected.
  144. //     dwExStyles - A DWORD value that contains the combo box control extended styles
  145. //                  to set for the control.
  146. // Returns:
  147. //     A DWORD value that contains the extended styles previously
  148. //     used for the control.
  149. //-----------------------------------------------------------------------
  150. DWORD SetExtendedStyle(DWORD dwExMask, DWORD dwExStyles);
  151. //-----------------------------------------------------------------------
  152. // Summary:
  153. //     This member function is used to determine if the text in the combo
  154. //     has changed by typing.
  155. // Returns:
  156. //     Nonzero if the user has typed in the control's edit box, otherwise
  157. //     returns zero.
  158. //-----------------------------------------------------------------------
  159. BOOL HasEditChanged();
  160. //-----------------------------------------------------------------------
  161. // Summary:
  162. //     Call this member function to get a pointer to the edit control for
  163. //     a combo box.
  164. // Returns:
  165. //     A pointer to a CEdit object.
  166. //-----------------------------------------------------------------------
  167. CEdit* GetEditCtrl();
  168. //-----------------------------------------------------------------------
  169. // Summary:
  170. //     Call this member function to get a pointer to a combo box control
  171. //     within a CXTComboBoxEx object.
  172. // Returns:
  173. //     A pointer to a CComboBox object.
  174. //-----------------------------------------------------------------------
  175. CComboBox* GetComboBoxCtrl();
  176. //-----------------------------------------------------------------------
  177. // Summary:
  178. //     Call this member function to retrieve a pointer to the image list
  179. //     used by a CXTComboBoxEx control.
  180. // Returns:
  181. //     A pointer to a CImageList object. If it fails, this member function
  182. //     returns NULL.
  183. //-----------------------------------------------------------------------
  184. CImageList* GetImageList() const;
  185. //-----------------------------------------------------------------------
  186. // Summary:
  187. //     Sets an image list for a ComboBoxEx control.
  188. // Parameters:
  189. //     pImageList - A pointer to a CImageList object containing the
  190. //                  images to use with the CXTComboBoxEx control.
  191. // Returns:
  192. //     A pointer to a CImageList object containing the images previously
  193. //     used by the CXTComboBoxEx control.  Returns NULL if no image
  194. //     list was previously set.
  195. //-----------------------------------------------------------------------
  196. CImageList* SetImageList(CImageList* pImageList);
  197. //{{AFX_CODEJOCK_PRIVATE
  198. int Dir(UINT attr, LPCTSTR lpszWildCard);                // Un-supported base class member function.
  199. int FindString(int nIndexStart, LPCTSTR lpszFind) const; // Un-supported base class member function.
  200. int AddString(LPCTSTR lpszString);                       // Un-supported base class member function.
  201. BOOL SetEditSel(int nStartChar, int nEndChar);           // Un-supported base class member function.
  202. int InsertString(int nIndex, LPCTSTR lpszString);        // Un-supported base class member function.
  203. //}}AFX_CODEJOCK_PRIVATE
  204. protected:
  205. //{{AFX_CODEJOCK_PRIVATE
  206. virtual BOOL PreTranslateMessage(MSG* pMsg);
  207. //}}AFX_CODEJOCK_PRIVATE
  208. private:
  209. BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
  210. };
  211. //////////////////////////////////////////////////////////////////////
  212. AFX_INLINE CXTComboBoxEx::CXTComboBoxEx() {
  213. }
  214. AFX_INLINE DWORD CXTComboBoxEx::GetExtendedStyle() const {
  215. ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, CBEM_GETEXTENDEDSTYLE, 0, 0);
  216. }
  217. AFX_INLINE DWORD CXTComboBoxEx::SetExtendedStyle(DWORD dwExMask, DWORD dwExStyles) {
  218. ASSERT(::IsWindow(m_hWnd)); return (DWORD) ::SendMessage(m_hWnd, CBEM_SETEXTENDEDSTYLE, (DWORD) dwExMask, (LPARAM) dwExStyles);
  219. }
  220. AFX_INLINE BOOL CXTComboBoxEx::HasEditChanged() {
  221. ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, CBEM_HASEDITCHANGED, 0, 0);
  222. }
  223. AFX_INLINE CEdit* CXTComboBoxEx::GetEditCtrl() {
  224. ASSERT(::IsWindow(m_hWnd)); return (CEdit*) CEdit::FromHandle((HWND) ::SendMessage(m_hWnd, CBEM_GETEDITCONTROL, 0, 0));
  225. }
  226. AFX_INLINE CComboBox* CXTComboBoxEx::GetComboBoxCtrl() {
  227. ASSERT(::IsWindow(m_hWnd)); return (CComboBox*) CComboBox::FromHandle((HWND) ::SendMessage(m_hWnd, CBEM_GETCOMBOCONTROL, 0, 0));
  228. }
  229. AFX_INLINE CImageList* CXTComboBoxEx::SetImageList(CImageList* pImageList) {
  230. ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST) ::SendMessage(m_hWnd, CBEM_SETIMAGELIST, 0, (LPARAM)pImageList->GetSafeHandle()));
  231. }
  232. AFX_INLINE CImageList* CXTComboBoxEx::GetImageList() const {
  233. ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST) ::SendMessage(m_hWnd, CBEM_GETIMAGELIST, 0, 0));
  234. }
  235. AFX_INLINE BOOL CXTComboBoxEx::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) {
  236. return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
  237. }
  238. //---------------------------------------------------------------------------
  239. // While CXTComboBoxEx derives from CComboBox, there are some
  240. // CB_messages the underlying ComboBoxEx control doesn't support.
  241. //---------------------------------------------------------------------------
  242. AFX_INLINE int CXTComboBoxEx::Dir(UINT /*attr*/, LPCTSTR /*lpszWildCard*/) {
  243. ASSERT(FALSE); return CB_ERR;
  244. }
  245. AFX_INLINE int CXTComboBoxEx::FindString(int /*nIndexStart*/, LPCTSTR /*lpszFind*/) const {
  246. ASSERT(FALSE); return CB_ERR;
  247. }
  248. AFX_INLINE int CXTComboBoxEx::AddString(LPCTSTR /*lpszString*/) {
  249. ASSERT(FALSE); return CB_ERR;
  250. }
  251. AFX_INLINE BOOL CXTComboBoxEx::SetEditSel(int /*nStartChar*/, int /*nEndChar*/) {
  252. return FALSE;
  253. }
  254. AFX_INLINE int CXTComboBoxEx::InsertString(int /*nIndex*/, LPCTSTR /*lpszString*/) {
  255. ASSERT(FALSE); return CB_ERR;
  256. }
  257. #endif // #if !defined(__XTCOMBOBOXEX_H__)