#pragma once

namespace ActiveBasic{ namespace IDE{


class MainFrame
	: public WindowComponents::BaseWindow
{
	WindowAreaManager wam;
	WindowComponents::MdiWindow *mdiWindow;

public:

	// 生成された
	::LRESULT OnCreate( ::UINT msg, ::WPARAM wParam, ::LPARAM lParam, ::BOOL& handled );

	// 「閉じる」ボタンがクリックされた
	::LRESULT OnClose( ::UINT msg, ::WPARAM wParam, ::LPARAM lParam, ::BOOL& handled );

	// リサイズされた
	void OnSize(UINT nType, CSize size);

	// 破棄された
	::LRESULT OnDestroy( ::UINT msg, ::WPARAM wParam, ::LPARAM lParam, ::BOOL& handled );

	// タイマーイベント
	void OnTimer( UINT_PTR id );

	// クリップボード内のデータが変更した
	void OnDrawClipboard();

	// メニューが選択された
	void OnMenuSelect( UINT nItemID, UINT nFlags, CMenu menu );

	// メニューがアクティブになる直前に送られる
	void OnInitMenu( CMenu menu );

	// メニューアイテムのサイズが要求された
	void OnMeasureItem( int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct );

	// メニューアイテムの描画が要求された
	void OnDrawItem( int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct );

	// 拡張コントロールからメッセージが通知された
	LRESULT OnNotify( int idCtrl, LPNMHDR pnmh );

	// 「新規作成」メニューがクリックされた
	void OnCmdNew( UINT uNotifyCode, int nID, CWindow wndCtl );

	// 「開く」メニューがクリックされた
	void OnCmdOpen( UINT uNotifyCode, int nID, CWindow wndCtl );

	// 「閉じる」メニューがクリックされた
	void OnCmdClose( UINT uNotifyCode, int nID, CWindow wndCtl );

private:
	// メッセージマップ
	BEGIN_MSG_MAP( MainFrame )
		MESSAGE_HANDLER( WM_CREATE, OnCreate )
		MESSAGE_HANDLER( WM_CLOSE, OnClose )
		MESSAGE_HANDLER( WM_DESTROY, OnDestroy )
		MSG_WM_TIMER( OnTimer )
		MSG_WM_DRAWCLIPBOARD( OnDrawClipboard )
		MSG_WM_MENUSELECT( OnMenuSelect )
		MSG_WM_INITMENU( OnInitMenu )
		MSG_WM_MEASUREITEM( OnMeasureItem )
		MSG_WM_DRAWITEM( OnDrawItem )

		MSG_WM_NOTIFY( OnNotify );

		COMMAND_ID_HANDLER_EX( IDM_NEW, OnCmdNew )
		COMMAND_ID_HANDLER_EX( IDM_OPEN, OnCmdOpen )
		COMMAND_ID_HANDLER_EX( IDM_CLOSE, OnCmdClose )
	END_MSG_MAP()
};


}}
