www.pudn.com > gridctrl_demo225.rar > GridCellCombo.h


#if !defined(AFX_GRIDCELLCOMBO_H__ECD42822_16DF_11D1_992F_895E185F9C72__INCLUDED_) 
#define AFX_GRIDCELLCOMBO_H__ECD42822_16DF_11D1_992F_895E185F9C72__INCLUDED_ 
 
#if _MSC_VER >= 1000 
#pragma once 
#endif // _MSC_VER >= 1000 
 
///////////////////////////////////////////////////////////////////////////// 
// GridCellCombo.h : header file 
// 
// MFC Grid Control - Grid combo cell class header file 
// 
// Written by Chris Maunder  
// Copyright (c) 1998-2002. All Rights Reserved. 
// 
// This code may be used in compiled form in any way you desire. This 
// file may be redistributed unmodified by any means PROVIDING it is  
// not sold for profit without the authors written consent, and  
// providing that this notice and the authors name and all copyright  
// notices remains intact.  
// 
// An email letting me know how you are using it would be nice as well.  
// 
// This file is provided "as is" with no expressed or implied warranty. 
// The author accepts no liability for any damage/loss of business that 
// this product may cause. 
// 
// For use with CGridCtrl v2.10 
// 
////////////////////////////////////////////////////////////////////// 
 
 
#include "../GridCtrl_src/GridCell.h" 
 
 
class CGridCellCombo : public CGridCell 
{ 
    friend class CGridCtrl; 
    DECLARE_DYNCREATE(CGridCellCombo) 
 
public: 
    CGridCellCombo(); 
 
// editing cells 
public: 
    virtual BOOL  Edit(int nRow, int nCol, CRect rect, CPoint point, UINT nID, UINT nChar); 
    virtual CWnd* GetEditWnd() const; 
    virtual void  EndEdit(); 
 
// Operations 
public: 
	virtual CSize GetCellExtent(CDC* pDC); 
 
// CGridCellCombo specific calls 
public: 
    void  SetOptions(const CStringArray& ar); 
    void  SetStyle(DWORD dwStyle)           { m_dwStyle = dwStyle; } 
    DWORD GetStyle()                        { return m_dwStyle;    } 
 
protected: 
    virtual BOOL Draw(CDC* pDC, int nRow, int nCol, CRect rect, BOOL bEraseBkgnd = TRUE); 
 
    CStringArray m_Strings; 
    DWORD        m_dwStyle; 
}; 
 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CComboEdit window 
 
#define IDC_COMBOEDIT 1001 
 
class CComboEdit : public CEdit 
{ 
// Construction 
public: 
	CComboEdit(); 
 
// Attributes 
public: 
 
// Operations 
public: 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CComboEdit) 
	virtual BOOL PreTranslateMessage(MSG* pMsg); 
	//}}AFX_VIRTUAL 
 
// Implementation 
public: 
	virtual ~CComboEdit(); 
 
	// Generated message map functions 
protected: 
	//{{AFX_MSG(CComboEdit) 
	afx_msg void OnKillFocus(CWnd* pNewWnd); 
	afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); 
	afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags); 
	//}}AFX_MSG 
 
	DECLARE_MESSAGE_MAP() 
}; 
 
///////////////////////////////////////////////////////////////////////////// 
// CInPlaceList window 
 
class CInPlaceList : public CComboBox 
{ 
    friend class CComboEdit; 
 
// Construction 
public: 
	CInPlaceList(CWnd* pParent,         // parent 
                 CRect& rect,           // dimensions & location 
                 DWORD dwStyle,         // window/combobox style 
                 UINT nID,              // control ID 
                 int nRow, int nColumn, // row and column 
                 COLORREF crFore, COLORREF crBack,  // Foreground, background colour 
				 CStringArray& Items,   // Items in list 
                 CString sInitText,     // initial selection 
				 UINT nFirstChar);      // first character to pass to control 
 
// Attributes 
public: 
   CComboEdit m_edit;  // subclassed edit control 
 
// Operations 
public: 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CInPlaceList) 
	protected: 
	virtual void PostNcDestroy(); 
	//}}AFX_VIRTUAL 
 
// Implementation 
public: 
	virtual ~CInPlaceList(); 
    void EndEdit(); 
 
protected: 
    int GetCorrectDropWidth(); 
 
// Generated message map functions 
protected: 
	//{{AFX_MSG(CInPlaceList) 
	afx_msg void OnKillFocus(CWnd* pNewWnd); 
	afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); 
	afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags); 
	afx_msg void OnDropdown(); 
	afx_msg UINT OnGetDlgCode(); 
	afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor); 
	//}}AFX_MSG 
	//afx_msg void OnSelendOK(); 
 
	DECLARE_MESSAGE_MAP() 
 
private: 
	int		 m_nNumLines; 
	CString  m_sInitText; 
	int		 m_nRow; 
	int		 m_nCol; 
 	UINT     m_nLastChar;  
	BOOL	 m_bExitOnArrows;  
    COLORREF m_crForeClr, m_crBackClr; 
}; 
 
///////////////////////////////////////////////////////////////////////////// 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Developer Studio will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_GRIDCELLCOMBO_H__ECD42822_16DF_11D1_992F_895E185F9C72__INCLUDED_)