#ifndef _CMULTIHEADERCTRL_H_
#define _CMULTIHEADERCTRL_H_

/////////////////////////////////////////////////////////////////////////////
// CMHeaderCtrl window

typedef void (*MHeaderDrawCallback)(LPDRAWITEMSTRUCT dis);

#ifdef CUIK
class CMHeaderCtrl : public CHeaderCtrl
#else
#ifdef CKCONTROLS_API
#define CKCONTROLS_CLASS_DECL  __declspec(dllexport)
#else
#define CKCONTROLS_CLASS_DECL  __declspec(dllimport)
#endif
namespace CKControl	//----------------------------------------
{
class CKCONTROLS_CLASS_DECL CMHeaderCtrl : public CHeaderCtrl
#endif
{
public:
//enums
	enum CMHEADER_FLAGS {
		HF_NONE			= 0x00000000,
		HF_DRAWBORDER	= 0x00000001,		//does not work yet
	};

// Construction
public:
	CMHeaderCtrl();

// Attributes
public:

// Operations
public:
	void GetItemRect(int i,RECT *r);
	int GetColumnWidth(int i);
	void SetColumnWidth(int i,int w);
	int GetHeaderSize();
	int HitTest(CPoint pt,UINT *flags);

	void SetActiveColumn(int pos);
	int  GetActiveColumn();

	void SetColors(	
				COLORREF backColor,
				COLORREF textColor,
				COLORREF textBackColor,
				COLORREF textSelectedColor,
				COLORREF textBackSelectedColor,
				COLORREF borderColor = 0
				);


	void GetColors(	
				COLORREF *backColor,
				COLORREF *textColor,
				COLORREF *textBackColor,
				COLORREF *textSelectedColor,
				COLORREF *textBackSelectedColor,
				COLORREF *borderColor=NULL
				);

	//flags
	DWORD	GetFlags() {return m_Flags;};
	void	ModifyFlags(DWORD added,DWORD removed=0) {m_Flags &= ~removed;m_Flags |= added;}
	void	SetFlags(DWORD f) {m_Flags = f;}

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CMHeaderCtrl)
	public:
		virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
	protected:
	virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
	//}}AFX_VIRTUAL
	
// Implementation
public:
	virtual ~CMHeaderCtrl();
	CWnd	*m_Owner;
	// Generated message map functions
protected:
	//{{AFX_MSG(CMHeaderCtrl)
	afx_msg void OnPaint();
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	//}}AFX_MSG
		
	COLORREF m_backColor;
	COLORREF m_textColor;
	COLORREF m_textBackColor;
	COLORREF m_textSelectedColor;
	COLORREF m_textBackSelectedColor;
	COLORREF m_borderColor;

	int m_LastPicked;
	int m_ActiveCol;

	DWORD	m_Flags;

	DECLARE_MESSAGE_MAP()
};	//class CMHeaderCtrl

#ifndef CUIK
}	//namespace CKControl
#endif

#endif
