//////////////////////////////////////////
// FileList.h
// Copyright (c) 02/08/2022 by BCCSkelton
//////////////////////////////////////////
//BCCSkeltonのヘッダー−これに必要なヘッダーが入っている
#include	"BCCSkelton.h"
//リソースIDのヘッダー
#include	"ResFileList.h"

/////////////////////////////////////////////////////////////////////
//CMyWndクラスをCDLGクラスから派生させ、メッセージ用の関数を宣言する
/////////////////////////////////////////////////////////////////////
class CFILELIST : public CDLG
{
public:	//以下はコールバック関数マクロと関連している
	//２重起動防止用のMutex用ID名称
	CFILELIST(char* UName) : CDLG(UName) {}
	//ツールバー
	CTBAR m_TBar;
	//ステータスバー
	CSBAR m_SBar;
	//リストビュー
	CLISTVIEW m_ListView;
	//メニュー項目、ダイアログコントロール関連
	bool OnOpen();
	bool OnSave();
	bool OnExit();
	bool OnAdd();
	bool OnSearch();
	bool OnEdit();
	bool OnDelete();
	bool OnSort();
	bool OnVersion();
	//ウィンドウメッセージ関連
	bool OnInit(WPARAM, LPARAM);
	bool OnNotify(WPARAM, LPARAM);
	bool OnSize(WPARAM, LPARAM);
	bool OnClose(WPARAM, LPARAM);
	bool OnDropFiles(WPARAM, LPARAM);
	bool OnMinMax(WPARAM, LPARAM);
	//ユーザー定義関数
	bool ChangeMenuStatus(bool);
	char* GetFileName(char*);
};

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

BEGIN_MODALDLGMSG(ModalProc, FileList)	//コールバック関数名は主ウィンドウの場合ModalProcにしている
	//メニュー項目、ダイアログコントロール関連
	ON_COMMAND(FileList, IDM_OPEN, OnOpen())
	ON_COMMAND(FileList, IDM_SAVE, OnSave())
	ON_COMMAND(FileList, IDM_EXIT, OnExit())
	ON_COMMAND(FileList, IDM_ADD, OnAdd())
	ON_COMMAND(FileList, IDM_SEARCH, OnSearch())
	ON_COMMAND(FileList, IDM_EDIT, OnEdit())
	ON_COMMAND(FileList, IDM_DELETE, OnDelete())
	ON_COMMAND(FileList, IDM_SORT, OnSort())
	ON_COMMAND(FileList, IDM_VERSION, OnVersion())
	//ウィンドウメッセージ関連
	//自動的にダイアログ作成時にOnInit()、終了時にOnClose()を呼びます
	ON_SIZE(FileList)
	ON_(FileList, WM_DROPFILES, OnDropFiles(wParam, lParam))
	ON_(FileList, WM_GETMINMAXINFO, OnMinMax(wParam, lParam))
END_DLGMSG

///////////////////////////////////////////
// CDLGクラスからEDITDLGクラスを派生
// 複数の同一ダイアログ変数とダイアログも作
// れるが、一つのダイアログに一つの派生ダイ
// アログクラスを作成するのが基本
///////////////////////////////////////////
class EDITDLG : public CDLG {
public:
	//コントロール関連
	bool OnIdok();
	bool OnIdcancel();
	//ダイアログメッセージ関連
	bool OnInit(WPARAM, LPARAM);
};

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

BEGIN_MODALDLGMSG(editdlgProc, editdlg)	//第1引数がコールバック関数の名前
	ON_COMMAND(editdlg, IDOK, OnIdok())
	ON_COMMAND(editdlg, IDCANCEL, OnIdcancel())
END_DLGMSG

///////////////////////////////////////////
// CDLGクラスからSEARCHDLGクラスを派生
// 複数の同一ダイアログ変数とダイアログも作
// れるが、一つのダイアログに一つの派生ダイ
// アログクラスを作成するのが基本
///////////////////////////////////////////
class SEARCHDLG : public CDLG {
public:
	char m_ToFind[MAX_PATH];
	//コントロール関連
	bool OnIdok();
	bool OnIdcancel();
	//ダイアログメッセージ関連
	bool OnInit(WPARAM, LPARAM);
};

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

BEGIN_MODALDLGMSG(searchdlgProc, searchdlg)	//第1引数がコールバック関数の名前
	ON_COMMAND(searchdlg, IDOK, OnIdok())
	ON_COMMAND(searchdlg, IDCANCEL, OnIdcancel())
END_DLGMSG

///////////////////////////////////////////
// CDLGクラスからSORTDLGクラスを派生
// 複数の同一ダイアログ変数とダイアログも作
// れるが、一つのダイアログに一つの派生ダイ
// アログクラスを作成するのが基本
///////////////////////////////////////////
class SORTDLG : public CDLG {
public:
	//コントロール関連
	bool OnIdok();
	bool OnIdcancel();
	//ダイアログメッセージ関連
	bool OnInit(WPARAM, LPARAM);
};

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

BEGIN_MODALDLGMSG(sortdlgProc, sortdlg)	//第1引数がコールバック関数の名前
	ON_COMMAND(sortdlg, IDOK, OnIdok())
	ON_COMMAND(sortdlg, IDCANCEL, OnIdcancel())
END_DLGMSG

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

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

BEGIN_MODALDLGMSG(versiondlgProc, versiondlg)	//第1引数がコールバック関数の名前
	ON_COMMAND(versiondlg, IDOK, OnIdok())
END_DLGMSG
