//////////////////////////////////////////
// WCEditor.h
// Copyright (c) 06/30/2022 by ECCSkelton
//////////////////////////////////////////
//ECCSkeltonのヘッダー−これに必要なヘッダーが入っている
#include	"ECCSkelton.h"
//リソースIDのヘッダー
#include	"ResWCEditor.h"

/////////////////////////////////////////////////////////////////////
//CMyWndクラスをCSDIクラスから派生させ、メッセージ用の関数を宣言する
/////////////////////////////////////////////////////////////////////
class CMyWnd : public CSDI
{
public:	//以下はコールバック関数マクロと関連している
	//２重起動防止用のMutex用ID名称
	CMyWnd(WCHAR* UName) : CSDI(UName) {}
	//メンバー変数
	int m_POS = 0;		//変換型式（UTF-16 - 0、BOM付UTF-8 - 1、BOM無UTF-8 - 2、SJIS - 3）
	//メニュー項目、ダイアログコントロール関連
	bool OnNew();
	bool OnOpen();
	bool OnSave();
	bool OnSaveas();
	bool OnExit();
	bool OnCut();
	bool OnCopy();
	bool OnPaste();
	bool OnUtf16();
	bool OnUtf8();
	bool OnUtf8n();
	bool OnSJIS();
	bool OnVersion();
	//ウィンドウメッセージ関連
	CMDTABLE	//CMyWndクラスのOnCommand()関数宣言
	bool OnCreate(WPARAM, LPARAM);
	bool OnSize(WPARAM, LPARAM);
	bool OnClose(WPARAM, LPARAM);
	//ユーザー定義関数
	void ChangeCheck(int);
};

////////////////////////////////////////////////////////////////////////
//派生させたCMyWndクラスのインスタンスとOnCommand関数(マクロ）の作成
////////////////////////////////////////////////////////////////////////
CMyWnd WCEditor(L"WCEditor");	//ウィンドウクラスインスタンスの生成

//CMyWndクラスのOnCommand()関数定義
BEGIN_CMDTABLE(CMyWnd)
	ON(IDM_NEW, OnNew())
	ON(IDM_OPEN, OnOpen())
	ON(IDM_SAVE, OnSave())
	ON(IDM_SAVEAS, OnSaveas())
	ON(IDM_EXIT, OnExit())
	ON(IDM_CUT, OnCut())
	ON(IDM_COPY, OnCopy())
	ON(IDM_PASTE, OnPaste())
	ON(IDM_UTF16, OnUtf16())
	ON(IDM_UTF8, OnUtf8())
	ON(IDM_UTF8N, OnUtf8n())
	ON(IDM_SJIS, OnSJIS())
	ON(IDM_VERSION, OnVersion())
END_CMDTABLE

//////////////////////
//UTF Types Constants
//////////////////////
const WCHAR *g_UTFTypes[4] = {L"UTF-16（BOM付）", L"UTF-8（BOM付）", L"UTF-8（BOM無）", L"Shift-JIS"};

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

////////////////////////
//EDIT BOX用コントロール
////////////////////////
CCTRL g_Edit;

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

///////////////////
//ファイル関係変数
///////////////////
CSTR g_FileName;
CSTR g_File;

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

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

//VERSIONDLGクラスのOnCommand()関数定義
BEGIN_CMDTABLE(VERSIONDLG)
	ON(IDOK, OnIdok())
END_CMDTABLE
