//////////////////////////////////////////
// LightCycle.h
// Copyright (c) 10/30/2021 by BCCSkelton
//////////////////////////////////////////
//BCCSkeltonのヘッダー−これに必要なヘッダーが入っている
#include	"BCCSkelton.h"
//リソースIDのヘッダー
#include	"ResLightCycle.h"
//CLightCycleクラスのヘッダー
#include	"CLightCycle.h"
//ユーザー定義のヘッダー
#include	"User.h"

/////////////////////////////////////////////////////////////////////
//CMyWndクラスをCSDIクラスから派生させ、メッセージ用の関数を宣言する
/////////////////////////////////////////////////////////////////////
class CMyWnd : public CSDI
{
public:	//メンバー変数
	CANVAS m_cvs;			//仮想ウィンドウ
	int m_NoLC;				//LightCycle台数
	CTIMER m_tm[4];			//タイマー
	CLIGHTCYCLE m_LC[4];	//LightCycle競技車
public:	//以下はコールバック関数マクロと関連している
	//２重起動防止用のMutex用ID名称
	CMyWnd(char* UName) : CSDI(UName) {}
	//メニュー項目、ダイアログコントロール関連
	bool OnAdd();
	bool OnOpen();
	bool OnSave();
	bool OnExit();
	bool OnGo();
	bool OnStop();
	bool OnVersion();
	//ウィンドウメッセージ関連
	bool OnCreate(WPARAM, LPARAM);
	bool OnTimer(WPARAM, LPARAM);
	bool OnLButtonDown(WPARAM, LPARAM);
	bool OnRButtonDown(WPARAM, LPARAM);
	bool OnNotify(WPARAM, LPARAM);
	bool OnSize(WPARAM, LPARAM);
	bool OnPaint(WPARAM, LPARAM);
	bool OnClose(WPARAM, LPARAM);
	bool OnMinMax(WPARAM, LPARAM);
	//ユーザー定義関数
	void ChangeMenuStatus(bool, bool);	//「ゲーム」メニューとツールバーボタン状態の変更
};

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

BEGIN_SDIMSG(LightCycle)	//ダイアログと違い、コールバック関数名を特定しない
	//メニュー項目、ダイアログコントロール関連
	ON_COMMAND(LightCycle, IDM_ADD, OnAdd())
	ON_COMMAND(LightCycle, IDM_OPEN, OnOpen())
	ON_COMMAND(LightCycle, IDM_SAVE, OnSave())
	ON_COMMAND(LightCycle, IDM_EXIT, OnExit())
	ON_COMMAND(LightCycle, IDM_GO, OnGo())
	ON_COMMAND(LightCycle, IDM_STOP, OnStop())
	ON_COMMAND(LightCycle, IDM_VERSION, OnVersion())
	//ウィンドウメッセージ関連
	ON_CREATE(LightCycle)
	ON_TIMER(LightCycle)
	ON_LBUTTONDOWN(LightCycle)
	ON_RBUTTONDOWN(LightCycle)
	ON_NOTIFY(LightCycle)
	ON_SIZE(LightCycle)
	ON_PAINT(LightCycle)
	ON_CLOSE(LightCycle)
	ON_(LightCycle, WM_GETMINMAXINFO, OnMinMax(wParam, lParam))
END_WNDMSG

///////////////////////////////////////////
// CDLGクラスからINPUTDLGクラスを派生
// 複数の同一ダイアログ変数とダイアログも作
// れるが、一つのダイアログに一つの派生ダイ
// アログクラスを作成するのが基本
///////////////////////////////////////////
class INPUTDLG : public CDLG {
public:
	//メンバー変数
	HWND m_hTip;				//IDC_IMAGE用ツールチップ
	//ウィンドウメッセージ関連
	bool OnInit(WPARAM, LPARAM);
	//コントロール関連
	bool OnSelChange(WPARAM);
	bool OnImage();
	bool OnOk();
	bool OnCancel();
	//ユーザー定義関数
	void SetData(int);
};

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

BEGIN_MODALDLGMSG(inputdlgProc, inputdlg)	//第1引数がコールバック関数の名前
	ON_COMMAND(inputdlg, IDC_COMBOBOX0, OnSelChange(wParam))
	ON_COMMAND(inputdlg, IDC_IMAGE, OnImage())
	ON_COMMAND(inputdlg, IDOK, OnOk())
	ON_COMMAND(inputdlg, IDCANCEL, OnCancel())
END_DLGMSG

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

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

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

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

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

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