//////////////////////////////////////////
// RTWEditor.h
// Copyright (c) 08/30/2022 by ECCSkelton
//////////////////////////////////////////

//システム定数定義
#define	IDC_TAB		1000	//タブのコントロールID
#define	IDC_EDIT	2000	//最初のタブページのエディットコントロールID
//最小ウィンドウサイズの規定（ツールバーボタンが全て見える最小値）
#define		MINW	510
#define		MINH	255
//対象ファイルのフィルター
#define		FILEFILTER	L"テキストファイル(*.rtf;*.txt)\0*.rtf;*.txt\0C++ファイル(*.h;*.cpp;*.rc;*.mak;*.ini)\0*.h;*.cpp;*.rc;*.mak;*.ini\0全てのファイル(*.*)\0*.*\0\0"
//BCCSkeltonのヘッダー−これに必要なヘッダーが入っている
#include	"ECCSkelton.h"
//リソースIDのヘッダー
#include	"ResRTWEditor.h"

/////////////////////////////////////////////////////////////////////
//CMyWndクラスをCSDIクラスから派生させ、メッセージ用の関数を宣言する
/////////////////////////////////////////////////////////////////////
class CMyWnd : public CSDI
{
private:
	CTAB	m_Tab;					//メインウィンドウに貼り付けるタブコントロール
	CREDIT	m_Edit;					//タブページのRichEditコントロールのカプセルインスタンス
	int 	m_EditID = IDC_EDIT;	//新規タブページのリッチエディット用コントロールID（注）
									//注：ユニークである為にコントロールを削除しても永久欠番にする
public:	//以下はコールバック関数マクロと関連している
	//２重起動防止用のMutex用ID名称
	CMyWnd(WCHAR* UName) : CSDI(UName) {}
	//メニュー項目、ダイアログコントロール関連
	bool OnNew();
	bool OnOpen();
	bool OnSave();
	bool OnSaveas();
	bool OnSetprint();
	bool OnPrint();
	bool OnExit();
	bool OnUndo();
	bool OnCut();
	bool OnCopy();
	bool OnPaste();
	bool OnSelall();
	bool OnFind();
	bool OnReplace();
	bool OnDelete();
	bool OnFont();
	bool OnLeft();
	bool OnCenter();
	bool OnRight();
	bool OnLindent();
	bool OnLoutdent();
	bool OnRindent();
	bool OnRoutdent();
	bool OnBrief();
	bool OnShortcut();
	bool OnVer();
	//ウィンドウメッセージ関連
	CMDTABLE	//CMyWndクラスのOnCommand()関数宣言
	bool OnCreate(WPARAM, LPARAM);
	bool OnNotify(WPARAM, LPARAM);
	bool OnSize(WPARAM, LPARAM);
	bool OnClose(WPARAM, LPARAM);
	bool OnDropFiles(WPARAM, LPARAM);
	bool OnGetMaxInfo(WPARAM, LPARAM);
	bool OnOthers(UINT, WPARAM, LPARAM);	//既定のメッセージ以外の処理
	//ユーザー定義関数
	bool AddTabEdit(WCHAR*);
	bool DelTabEdit();
	bool PopupMenu();
};

////////////////////////////////////////////////////////////////////////
//派生させたCMyWndクラスのインスタンスとコールバック関数(マクロ）の作成
//主ウィンドウはダイアログと違い、コールバック関数は一つしか作れない
////////////////////////////////////////////////////////////////////////
CMyWnd RTWEditor(L"RTWEditor");	//ウィンドウクラスインスタンスの生成

//CMyWndクラスのOnCommand()関数定義
BEGIN_CMDTABLE(CMyWnd)
	//メニュー項目、ダイアログコントロール関連
	ON(IDM_NEW, OnNew())
	ON(IDM_OPEN, OnOpen())
	ON(IDM_SAVE, OnSave())
	ON(IDM_SAVEAS, OnSaveas())
	ON(IDM_SETPRINT, OnSetprint())
	ON(IDM_PRINT, OnPrint())
	ON(IDM_EXIT, OnExit())
	ON(IDM_UNDO, OnUndo())
	ON(IDM_CUT, OnCut())
	ON(IDM_COPY, OnCopy())
	ON(IDM_PASTE, OnPaste())
	ON(IDM_SELALL, OnSelall())
	ON(IDM_FIND, OnFind())
	ON(IDM_REPLACE, OnReplace())
	ON(IDM_DELETE, OnDelete())
	ON(IDM_FONT, OnFont())
	ON(IDM_LEFT, OnLeft())
	ON(IDM_CENTER, OnCenter())
	ON(IDM_RIGHT, OnRight())
	ON(IDM_LINDENT, OnLindent())
	ON(IDM_LOUTDENT, OnLoutdent())
	ON(IDM_RINDENT, OnRindent())
	ON(IDM_ROUTDENT, OnRoutdent())
	ON(IDM_BRIEF, OnBrief())
	ON(IDM_SHORTCUT, OnShortcut())
	ON(IDM_VER, OnVer())
END_CMDTABLE

///////////////////
//ツールバーの作成
///////////////////
CTBAR TBar;

///////////////////////
//ステータスバーの作成
///////////////////////
CSBAR SBar;

////////////////////////
//コモンダイアログの作成
////////////////////////
CMNDLG cmndlg;

//////////////////////
//CEXTCHKのインスタンス
//////////////////////
CEXTCHK g_ExtChk;

///////////////////////////////////////////
// CDLGクラスからVERSIONDLGクラスを派生
// 複数の同一ダイアログ変数とダイアログも作
// れるが、一つのダイアログに一つの派生ダイ
// アログクラスを作成するのが基本
///////////////////////////////////////////
class VERSIONDLG : public CDLG {
public:
	CMDTABLE	//VERSIONDLGクラスのOnCommand()関数宣言
	bool OnIdok();
};

////////////////////////////////////////////////////////////////////////////
// VERSIONDLGクラスダイアログ変数の生成とそのコールバック関数（マクロ）を定義
// 複数同一クラスのダイアログを作成することを予期してコールバック関数を明記
////////////////////////////////////////////////////////////////////////////
VERSIONDLG versiondlg;

//VERSIONDLGクラスのOnCommand()関数定義
BEGIN_CMDTABLE(VERSIONDLG)
	//メニュー項目、ダイアログコントロール関連
	ON(IDOK, OnIdok())
END_CMDTABLE
