#include "StdAfx.h"
#include "DebugDialog.h"
#include "resource.h"

CDebugDialog::CDebugDialog(void)
{
}

CDebugDialog::~CDebugDialog(void)
{
}


/////////////////////////////////////////////////////////////////////////////////
//	初期化
/////////////////////////////////////////////////////////////////////////////////
/*!
	ダイアログ表示
*/
void CDebugDialog::DoDebug(HINSTANCE hInstance, IServerControlPtr serverControl)
{
	//	サーバコントロール
	m_serverControl = serverControl;

	//	ダイアログ表示
	::DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_APP), NULL, _WindowProc, (LPARAM)this);
}


/////////////////////////////////////////////////////////////////////////////////
//	コールバック
/////////////////////////////////////////////////////////////////////////////////
/*!
	ダイアログプロシージャ
*/
INT_PTR CALLBACK CDebugDialog::_WindowProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	//	初期化
	if(message == WM_INITDIALOG)
		::SetWindowLongPtr(hDlg, GWLP_USERDATA, (LONG_PTR)lParam);

	//	取得できたらコール
	CDebugDialog *obj = (CDebugDialog*)::GetWindowLongPtr(hDlg, GWLP_USERDATA);

	//	クラスのメソッドを呼び出し
	if(obj != NULL)
		return obj->WindowProc(hDlg, message, wParam, lParam);
	return (INT_PTR)FALSE;
}

/*!
	ダイアログプロシージャ
*/
INT_PTR CALLBACK CDebugDialog::WindowProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
	case WM_INITDIALOG:
		return (INT_PTR)TRUE;

	case WM_COMMAND:
		return OnCommand(hDlg, LOWORD(wParam), wParam, lParam);
	}
	return (INT_PTR)FALSE;
}


/*!
	コマンドハンドラ
*/
INT_PTR CDebugDialog::OnCommand(HWND hDlg, UINT commandId, WPARAM wParam, LPARAM lParam)
{
	//	コマンド実行
	switch(commandId)
	{
	case IDOK:
		m_serverControl->StartServer();
		return (INT_PTR)TRUE;

	case IDCANCEL:
		EndDialog(hDlg, LOWORD(wParam));
		return (INT_PTR)TRUE;
	}

	return (INT_PTR)FALSE;
}

