/////////////////////////////////////////////////////////////////////////////
//
//	$Revision: 1 $
//
//	Name		:	ItemEdit.h
//
//	Purpose		:	Custom Edit control
//	
//	Written		:	cchow	09/2005
//
//	Description	:	Declaration of CItemEdit
//
//	Copyright (c) 2005 Sierra Wireless Inc. All rights reserved
/////////////////////////////////////////////////////////////////////////////
#pragma once


/////////////////////////////////////////////////////////////////////////////
//
//	Name		:	CItemEdit
//
//	Written		:	cchow	09/05
//
//	Description	:	Custom edit control used in as an in-place editor
//					with a report listcontrol.
//
/////////////////////////////////////////////////////////////////////////////
class CItemEdit : public CEdit
{
	DECLARE_DYNAMIC(CItemEdit)

public:
	/////////////////////////////////////////////////////////////////////////////
	//
	//   Function   :	CItemEdit
	//
	//   Description:	Constructor
	//
	//   Arguments  :	[in]szText		- edit text
	//					[in]nItem		- Reportview item being edited
	//					[in]nSubItem	- subitem being edited
	//
	//   Returns:   :	none
	//
	//   Comments   :	none
	//
	/////////////////////////////////////////////////////////////////////////////
	CItemEdit(LPCTSTR szText, int nItem, int nSubItem);

	/////////////////////////////////////////////////////////////////////////////
	//
	//   Function   :	~CItemEdit
	//
	//   Description:	Destructor
	//
	//   Arguments  :	none
	//
	//   Returns:   :	none
	//
	//   Comments   :	none
	//
	/////////////////////////////////////////////////////////////////////////////
	virtual ~CItemEdit();

	////////////////////////////////////////////////////////////////////////////////
	//
	//   Function   :	HitTest
	//
	//   Description:	Determine if coordinates intersect control
	//
	//   Arguments  :	[in]point	- coordates to test against
	//
	//   Returns:   :	true if intersects, false otherwise
	//
	//   Comments   :	none
	//
	////////////////////////////////////////////////////////////////////////////////
	bool	HitTest(CPoint point);

	////////////////////////////////////////////////////////////////////////////////
	//
	//   Function   :	ResetModified
	//
	//   Description:	Resets the modified flag to false
	//
	//   Arguments  :	none
	//
	//   Returns:   :	none
	//
	//   Comments   :	Typically called after setting default value to prevent
	//					the control from notifying the parent of a change
	//
	////////////////////////////////////////////////////////////////////////////////
	void	ResetModified();

	afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnNcDestroy();
	afx_msg void OnKillFocus(CWnd* pNewWnd);
	virtual BOOL PreTranslateMessage(MSG* pMsg);

protected:
	DECLARE_MESSAGE_MAP()

	bool	m_bCancel;		// Did the user cancel selection?
	int		m_nItem;		// item being edited
	int		m_nSubItem;		// subitem being edited
	bool	m_bModified;	// has item been modified?

public:
	afx_msg void OnEnChange();
};


