#if !defined(AFX_RICHEDITCTRLWITHLINEMANAGEMENT_H__60A10EEF_EEEE_11D1_BAFF_00A0245476ED__INCLUDED_)
#define AFX_RICHEDITCTRLWITHLINEMANAGEMENT_H__60A10EEF_EEEE_11D1_BAFF_00A0245476ED__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// RichEditCtrlWithLineManagement.h : header file
//

#include <afxtempl.h>

/////////////////////////////////////////////////////////////////////////////
// CRichEditCtrlWithLineManagement window

class CRichEditCtrlWithLineManagement : public CRichEditCtrl
{
// Construction
public:
	CRichEditCtrlWithLineManagement();

// Attributes
private:
	CStringList						m_cslHiddenLines;
	CList <long, long>				m_clHiddenLinesNumbers;

	COLORREF						m_rgbMarkColor;
	CList <CStatic *, CStatic *>	m_clMarkWindows;
	CList <long, long>				m_clMarkedLinesNumbers;

// Operations
public:
	// single line
	CString m_fn_csGetLine (long);
	void	m_fn_vDeleteLine (long);
	void	m_fn_vAddLine (long, CString);
	void	m_fn_vReplaceLine (long, CString);
	void	m_fn_vAppendLine (CString);

	// multi line
	// hides only the required lines
	// to show all lines call with an empty list
	void	m_fn_vHideLines (CList <long, long> &);
	//void	m_fn_vMarkLines (CList <long, long> &, COLORREF = RGB (0, 0, 0));

	// ...
	void	m_fn_vSetSelLine (long lLineIndex);
	long	m_fn_lGetSelLine (void);

	void	m_fn_vMarkLine (long lLineIndex);
// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CRichEditCtrlWithLineManagement)
	public:
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~CRichEditCtrlWithLineManagement();

	// Generated message map functions
protected:
	//{{AFX_MSG(CRichEditCtrlWithLineManagement)
	//}}AFX_MSG

	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_RICHEDITCTRLWITHLINEMANAGEMENT_H__60A10EEF_EEEE_11D1_BAFF_00A0245476ED__INCLUDED_)
