//////////////////////////////////////////
// IconViewer.h
// Copyright (c) 04/09/2021 by BCCSkelton
//////////////////////////////////////////
//BCCSkeltonのヘッダー−これに必要なヘッダーが入っている
#include	"BCCSkelton.h"
//リソースIDのヘッダー
#include	"ResIconViewer.h"
//CICONクラスのヘッダー
#include	"CICON.h"

/////////////////////////////////////////////////////////////////////
//ICONDLGクラスをCDLGクラスから派生させ、メッセージ用の関数を宣言する
/////////////////////////////////////////////////////////////////////
class ICONVIEWER : public CDLG
{
public:	//以下はコールバック関数マクロと関連している
	//２重起動防止用のMutex用ID名称
	ICONVIEWER(char* UName) : CDLG(UName) {}
	//メニュー項目、ダイアログコントロール関連
	bool OnEdit();
	bool OnOpen();
	bool OnSave();
	bool OnSaveas();
	bool OnBmpsave();
	bool OnExit();
	bool OnAdd();
	bool OnDelete();
	bool OnDisplay();
	bool OnHelp();
	bool OnVersion();
	//ウィンドウメッセージ関連
	bool OnInit(WPARAM, LPARAM);
	bool OnNotify(WPARAM, LPARAM);
	bool OnClose(WPARAM, LPARAM);
	bool OnDropFiles(WPARAM, LPARAM);
	bool OnDestroy(WPARAM, LPARAM);
	//ユーザー定義関数
	bool SetListView();
	bool ShowIconData(int);
};

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

BEGIN_MODALDLGMSG(IconViewerProc, IconViewer)	//コールバック関数
	//メニュー項目、ダイアログコントロール関連
	ON_COMMAND(IconViewer, IDM_OPEN, OnOpen())
	ON_COMMAND(IconViewer, IDM_SAVE, OnSave())
	ON_COMMAND(IconViewer, IDM_SAVEAS, OnSaveas())
	ON_COMMAND(IconViewer, IDM_BMPSAVE, OnBmpsave())
	ON_COMMAND(IconViewer, IDM_EXIT, OnExit())
	ON_COMMAND(IconViewer, IDM_ADD, OnAdd())
	ON_COMMAND(IconViewer, IDM_DELETE, OnDelete())
	ON_COMMAND(IconViewer, IDM_DISPLAY, OnDisplay())
	ON_COMMAND(IconViewer, IDM_HELP, OnHelp())
	ON_COMMAND(IconViewer, IDM_VERSION, OnVersion())
	//ウィンドウメッセージ関連
	ON_(IconViewer, WM_DROPFILES, OnDropFiles(wParam, lParam))
	//自動的にダイアログ作成時にOnInit()、終了時にOnClose()を呼びます
	ON_DESTROY(IconViewer)
END_DLGMSG

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

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

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

////////////////////////
//CARGインスタンスの作成
////////////////////////
CARG Arg;

/////////////////
//ヘルプファイル
/////////////////
CSTR g_HelpFile;
                
///////////////////////
//ポップアップメニュー
///////////////////////
HMENU g_hPopup;
                
///////////////////////
//ファイル起動用フラグ
///////////////////////
bool g_ByFile = FALSE;
                
/////////////////////
//読込ファイル用変数
/////////////////////
CSTR g_FileName;
int g_ImageType = IMAGE_ICON;	//初期値はアイコン

///////////////////////
//CICONインスタンス変数
///////////////////////
CICON g_Icon;

////////////////////////////
//CICONホットスポット用変数
////////////////////////////
int g_Num;	//書き込み処理をしているカーソルの番号

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

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

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

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

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

BEGIN_MODALDLGMSG(hotspotdlgProc, hotspotdlg)	//第1引数がコールバック関数の名前
	ON_COMMAND(hotspotdlg, IDOK, OnIdok())
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
