#if !defined(AFX_VIEWS_H__20050510_6D37_02C3_39BC_0080AD509054__INCLUDED_)
#define AFX_VIEWS_H__20050510_6D37_02C3_39BC_0080AD509054__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


class CStandardPageWnd : public CWindowWnd, public INotifyUI
{
public:
	UINT GetClassStyle() const;
	void OnFinalMessage(HWND hWnd);
	LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);

	virtual void Init();
	virtual void OnPrepareAnimation();
	virtual void Notify(TNotifyUI& msg);
	virtual LPCTSTR GetDialogResource() const = 0;

public:
	CPaintManagerUI m_pm;
};

class CStartPageWnd : public CStandardPageWnd
{
public:
	LPCTSTR GetWindowClassName() const;
	LPCTSTR GetDialogResource() const;
	void OnPrepareAnimation();
	void Init();
};

class CConfigurePageWnd : public CStandardPageWnd
{
public:
	LPCTSTR GetWindowClassName() const;
	LPCTSTR GetDialogResource() const;
	void OnPrepareAnimation();
};

class CRegistersPageWnd : public CStandardPageWnd, public IListCallbackUI
{
public:
	LPCTSTR GetWindowClassName() const;
	LPCTSTR GetDialogResource() const;
	void OnPrepareAnimation();
	// IListCallbackUI
	LPCTSTR GetItemText(CControlUI* pControl, int iIndex, int iSubItem);
	int CompareItem(CControlUI* pList, CControlUI* pItem1, CControlUI* pItem2);
};

class CReportsPageWnd : public CStandardPageWnd
{
public:
	LPCTSTR GetWindowClassName() const;
	LPCTSTR GetDialogResource() const;
	void OnPrepareAnimation();
};

class CSystemsPageWnd : public CStandardPageWnd, public IListCallbackUI
{
public:
	LPCTSTR GetWindowClassName() const;
	LPCTSTR GetDialogResource() const;
	void Notify(TNotifyUI& msg);
	void OnPrepareAnimation();
	void OnExpandItem(CControlUI* pControl);
	// IListCallbackUI
	LPCTSTR GetItemText(CControlUI* pControl, int iIndex, int iSubItem);
	int CompareItem(CControlUI* pList, CControlUI* pItem1, CControlUI* pItem2);
};

class CSearchPageWnd : public CStandardPageWnd
{
public:
	LPCTSTR GetWindowClassName() const;
	LPCTSTR GetDialogResource() const;
	void Notify(TNotifyUI& msg);
	void Init();
};

class CEditPageWnd : public CStandardPageWnd
{
public:
	LPCTSTR GetWindowClassName() const;
	LPCTSTR GetDialogResource() const;
	void Notify(TNotifyUI& msg);
	void OnPrepareAnimation();
	void Init();
};

class CPopupWnd : public CStandardPageWnd
{
public:
	UINT GetClassStyle() const;
	LPCTSTR GetWindowClassName() const;
	LPCTSTR GetDialogResource() const;
	void Notify(TNotifyUI& msg);
	void Init();
};


#endif // !defined(AFX_VIEWS_H__20050510_6D37_02C3_39BC_0080AD509054__INCLUDED_)

