// XTComboBoxEx.h : interface for the CXTComboBoxEx class. // // This file is a part of the XTREME CONTROLS MFC class library. // (c)1998-2012 Codejock Software, All Rights Reserved. // // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN // CONSENT OF CODEJOCK SOFTWARE. // // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A // SINGLE COMPUTER. // // CONTACT INFORMATION: // support@codejock.com // http://www.codejock.com // ///////////////////////////////////////////////////////////////////////////// //{{AFX_CODEJOCK_PRIVATE #if !defined(__XTCOMBOBOXEX_H__) #define __XTCOMBOBOXEX_H__ //}}AFX_CODEJOCK_PRIVATE #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 //=========================================================================== // Summary: // The CXTComboBoxEx class is a CComboBox derived class. It extends the // combo box control by providing support for image lists. // Remarks: // By using CXTComboBoxEx // to create combo box controls, you no longer need to implement your own // image drawing code. Instead, use CXTComboBoxEx to access images from // an image list. //=========================================================================== class _XTP_EXT_CLASS CXTComboBoxEx : public CComboBox { DECLARE_DYNAMIC(CXTComboBoxEx) public: //----------------------------------------------------------------------- // Summary: // Constructs a CXTComboBoxEx object //----------------------------------------------------------------------- CXTComboBoxEx(); //----------------------------------------------------------------------- // Summary: // Destroys a CXTComboBoxEx object, handles cleanup and deallocation //----------------------------------------------------------------------- virtual ~CXTComboBoxEx(); public: //----------------------------------------------------------------------- // Summary: // This member function creates the combo box and attaches it to the // CXTComboBoxEx object. // Parameters: // dwStyle - Specifies the combination of combo box styles applied // to the combo box. // rect - A reference to a CRect object or RECT structure that // specifies the position and size of the combo box. // pParentWnd - A pointer to a CWnd object that is the parent window // of the combo box (usually a CDialog). It must not // be NULL. // nID - Specifies the combo box's control ID. // Returns: // Nonzero if the operation was successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID); //{{AFX_CODEJOCK_PRIVATE #if _MSC_VER > 1200 //MFC 7.0 using CComboBox::DeleteItem; #endif //MFC 7.0 //}}AFX_CODEJOCK_PRIVATE //----------------------------------------------------------------------- // Summary: // This member function removes an item from a ComboBoxEx control. // Parameters: // iIndex - Zero-based index of the item to be removed. // Returns: // The number of items remaining in the control. If 'iIndex' is // invalid, the function returns CB_ERR. //----------------------------------------------------------------------- int DeleteItem(int iIndex); //----------------------------------------------------------------------- // Summary: // This member function retrieves item information for a given // ComboBoxEx item. // Parameters: // pCBItem - A pointer to a COMBOBOXEXITEM structure that will // receive the item information. // Returns: // Nonzero if the operation was successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL GetItem(COMBOBOXEXITEM* pCBItem); //----------------------------------------------------------------------- // Summary: // This member function inserts a new item in a ComboBoxEx control. // Parameters: // pCBItem - A pointer to a COMBOBOXEXITEM structure that will // receive the item information. This structure contains // callback flag values for the item. // iItem - Item index. // nStringID - String resource. // lpszItem - Item string. // iIndent - Amount in pixels the image is to be indented. // iImage - Image index. // iSelectedImage - Selected image index. // mask - Style mask. // Returns: // The index at which the new item was inserted if successful; // otherwise returns -1. //----------------------------------------------------------------------- int InsertItem(const COMBOBOXEXITEM* pCBItem); 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);// 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); // //----------------------------------------------------------------------- // Summary: // This member function sets the attributes for an item in a // ComboBoxEx control. // Parameters: // pCBItem - A pointer to a COMBOBOXEXITEM structure that will // receive the item information. // Returns: // Nonzero if the operation was successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL SetItem(const COMBOBOXEXITEM* pCBItem); //----------------------------------------------------------------------- // Summary: // This member function retrieves the extended styles control. // Returns: // The DWORD value that contains the extended styles that are used for // the combo box control. //----------------------------------------------------------------------- DWORD GetExtendedStyle() const; //----------------------------------------------------------------------- // Summary: // This member function sets extended styles within a combo box control. // Parameters: // dwExMask - A DWORD value that indicates which styles in 'dwExStyles' // are to be affected. Only the extended styles in // 'dwExMask' will be changed. All other styles will // be maintained as is. If this parameter is zero, // then all of the styles in 'dwExStyles' will be affected. // dwExStyles - A DWORD value that contains the combo box control extended styles // to set for the control. // Returns: // A DWORD value that contains the extended styles previously // used for the control. //----------------------------------------------------------------------- DWORD SetExtendedStyle(DWORD dwExMask, DWORD dwExStyles); //----------------------------------------------------------------------- // Summary: // This member function is used to determine if the text in the combo // has changed by typing. // Returns: // Nonzero if the user has typed in the control's edit box, otherwise // returns zero. //----------------------------------------------------------------------- BOOL HasEditChanged(); //----------------------------------------------------------------------- // Summary: // Call this member function to get a pointer to the edit control for // a combo box. // Returns: // A pointer to a CEdit object. //----------------------------------------------------------------------- CEdit* GetEditCtrl(); //----------------------------------------------------------------------- // Summary: // Call this member function to get a pointer to a combo box control // within a CXTComboBoxEx object. // Returns: // A pointer to a CComboBox object. //----------------------------------------------------------------------- CComboBox* GetComboBoxCtrl(); //----------------------------------------------------------------------- // Summary: // Call this member function to retrieve a pointer to the image list // used by a CXTComboBoxEx control. // Returns: // A pointer to a CImageList object. If it fails, this member function // returns NULL. //----------------------------------------------------------------------- CImageList* GetImageList() const; //----------------------------------------------------------------------- // Summary: // Sets an image list for a ComboBoxEx control. // Parameters: // pImageList - A pointer to a CImageList object containing the // images to use with the CXTComboBoxEx control. // Returns: // A pointer to a CImageList object containing the images previously // used by the CXTComboBoxEx control. Returns NULL if no image // list was previously set. //----------------------------------------------------------------------- CImageList* SetImageList(CImageList* pImageList); //{{AFX_CODEJOCK_PRIVATE int Dir(UINT attr, LPCTSTR lpszWildCard); // Un-supported base class member function. int FindString(int nIndexStart, LPCTSTR lpszFind) const; // Un-supported base class member function. int AddString(LPCTSTR lpszString); // Un-supported base class member function. BOOL SetEditSel(int nStartChar, int nEndChar); // Un-supported base class member function. int InsertString(int nIndex, LPCTSTR lpszString); // Un-supported base class member function. //}}AFX_CODEJOCK_PRIVATE protected: //{{AFX_CODEJOCK_PRIVATE virtual BOOL PreTranslateMessage(MSG* pMsg); //}}AFX_CODEJOCK_PRIVATE private: BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL); }; ////////////////////////////////////////////////////////////////////// AFX_INLINE CXTComboBoxEx::CXTComboBoxEx() { } AFX_INLINE DWORD CXTComboBoxEx::GetExtendedStyle() const { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, CBEM_GETEXTENDEDSTYLE, 0, 0); } AFX_INLINE DWORD CXTComboBoxEx::SetExtendedStyle(DWORD dwExMask, DWORD dwExStyles) { ASSERT(::IsWindow(m_hWnd)); return (DWORD) ::SendMessage(m_hWnd, CBEM_SETEXTENDEDSTYLE, (DWORD) dwExMask, (LPARAM) dwExStyles); } AFX_INLINE BOOL CXTComboBoxEx::HasEditChanged() { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, CBEM_HASEDITCHANGED, 0, 0); } AFX_INLINE CEdit* CXTComboBoxEx::GetEditCtrl() { ASSERT(::IsWindow(m_hWnd)); return (CEdit*) CEdit::FromHandle((HWND) ::SendMessage(m_hWnd, CBEM_GETEDITCONTROL, 0, 0)); } AFX_INLINE CComboBox* CXTComboBoxEx::GetComboBoxCtrl() { ASSERT(::IsWindow(m_hWnd)); return (CComboBox*) CComboBox::FromHandle((HWND) ::SendMessage(m_hWnd, CBEM_GETCOMBOCONTROL, 0, 0)); } AFX_INLINE CImageList* CXTComboBoxEx::SetImageList(CImageList* pImageList) { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST) ::SendMessage(m_hWnd, CBEM_SETIMAGELIST, 0, (LPARAM)pImageList->GetSafeHandle())); } AFX_INLINE CImageList* CXTComboBoxEx::GetImageList() const { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST) ::SendMessage(m_hWnd, CBEM_GETIMAGELIST, 0, 0)); } AFX_INLINE BOOL CXTComboBoxEx::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) { return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext); } //--------------------------------------------------------------------------- // While CXTComboBoxEx derives from CComboBox, there are some // CB_messages the underlying ComboBoxEx control doesn't support. //--------------------------------------------------------------------------- AFX_INLINE int CXTComboBoxEx::Dir(UINT /*attr*/, LPCTSTR /*lpszWildCard*/) { ASSERT(FALSE); return CB_ERR; } AFX_INLINE int CXTComboBoxEx::FindString(int /*nIndexStart*/, LPCTSTR /*lpszFind*/) const { ASSERT(FALSE); return CB_ERR; } AFX_INLINE int CXTComboBoxEx::AddString(LPCTSTR /*lpszString*/) { ASSERT(FALSE); return CB_ERR; } AFX_INLINE BOOL CXTComboBoxEx::SetEditSel(int /*nStartChar*/, int /*nEndChar*/) { return FALSE; } AFX_INLINE int CXTComboBoxEx::InsertString(int /*nIndex*/, LPCTSTR /*lpszString*/) { ASSERT(FALSE); return CB_ERR; } #endif // #if !defined(__XTCOMBOBOXEX_H__)