#include	"basewin.h"

#ifndef	_H_APPSUB
#define	_H_APPSUB

class DiaApp ;

/*
 * 一覧表示
 */
class ListArea {
private:
	HWND			m_hWnd ;		/* 対応するウィンドウハンドル */

public:
	HWND	get_hwnd() const { return m_hWnd ; }
	HWND	Create( HINSTANCE hInst, HWND hWndParent, DWORD x, DWORD y, DWORD w, DWORD h, WORD id ) ;
	void	SetProc( int (*proc)( int ln, const BYTE **buf, int *len ) ) ;
	DWORD	GetCurSel() const ;
	void	SetCurSel( DWORD index ) ;
	void	SendKey( DWORD nVirtKey ) const ;
	void	SetFocus() const { ::SetFocus( m_hWnd ) ; }
	void	Clear() ;
	void	SetKeyMask( BOOL fTitle ) ;
} ;

/*
 * ヘッダー表示
 */
class HeaderArea {
private:
	HWND			m_hWnd ;		/* 対応するウィンドウハンドル */

public:
	HWND	get_hwnd() const { return m_hWnd ; }
	DWORD	Create( HINSTANCE hInst, HWND hWndParent, DWORD x, DWORD y, DWORD w, WORD id ) ;
	void	SetText( LPCTSTR text ) ;
} ;

/*
 * 時刻表示
 */
class DateArea {
private:
	HWND			m_hWnd ;		/* 対応するウィンドウハンドル */
	TCHAR			m_sFix[ 20 ] ;

public:
	DateArea() ;

	HWND	get_hwnd() const { return m_hWnd ; }
	DWORD	Create( HINSTANCE hInst, HWND hWndParent, DWORD x, DWORD y, DWORD w, WORD id ) ;
	void	Refresh() ;
} ;

/*
 * メインウィンドウ
 */
class MainWindow : public Window {
private:
	DiaApp			*m_pApp ;		/* アプリケーションへのポインタ */
	HWND			m_hWndCB ;		/* CommandBarのハンドル */
	HICON			m_hIcon ;		/* アプリアイコンのハンドル */
	BOOL			m_fDeleteReg ;	/* レジストリを削除する場合*真* */

	DWORD	CreateCommandBar() ;

public:
	MainWindow( DiaApp * ) ;
	~MainWindow() ;

	BOOL	Create() ;
	void	WMCreate( HWND hWnd ) ;
	void	WMDestroy() ;
	void	WMSetFocus() ;
	LRESULT	WMCommand( HWND hWnd, UINT msg, WPARAM wp, LPARAM lp ) ;
	void	WMTimer( int idCtrl ) ;
	BOOL	WMClose() ;

	static	BOOL	RegisterClass( HINSTANCE hInst ) ;
	static	LPCTSTR	GetClassName() { return TEXT("DIATRAIN") ; }
} ;

#endif	/* _H_APPSUB */
