//////////////////////////////////////////
// CalcProc.h
// Copyright (c) 12/13/2024 by ECCSkelton
//////////////////////////////////////////

/////////////////////////////////
//主ウィンドウCMyWndの関数の定義
//ウィンドウメッセージ関数
/////////////////////////////////
bool CMyWnd::OnClose(WPARAM wParam, LPARAM lParam) {

	if(MessageBox(m_hWnd, L"終了しますか", L"終了確認",
					MB_YESNO | MB_ICONINFORMATION) == IDYES)
		//処理をするとDestroyWindow、PostQuitMessageが呼ばれる
		return TRUE;
	else
		//そうでなければウィンドウではDefWindowProc関数をreturn、ダイアログではreturn FALSEとなる。
		return FALSE;
}

//ダイアログベースの場合はこれが必要
bool CMyWnd::OnDestroy(WPARAM wPram, LPARAM lParam) {

	PostQuitMessage(0);
	return TRUE;
}

/////////////////////////////////
//主ウィンドウCMyWndの関数の定義
//メニュー項目、コントロール関数
/////////////////////////////////
bool CMyWnd::OnCalc() {

	//エディットボックスの演算式文字列を取得する
	SendItemMsg(IDC_EDIT, WM_GETTEXT, MAXLEN - 1, (LPARAM)m_Formula);
	//CALCクラスインスタンスを作成し、演算を行う
	int result;		//整数の演算値が入る
	WCHAR solution[MAXLEN];
	//使い方１
	CALC calc;
	if(calc.TryCalc(result, m_Formula)) {
	//使い方２
	//CALC calc(m_Formula);
	//if(calc.TryCalc(result))
	//使い方３
	//CALC calc;
	//calc = m_Formula;
	//if(calc.TryCalc(result))
		CSTR sol(result);
		SendItemMsg(IDC_SOL, WM_SETTEXT, 0, (LPARAM)sol.ToChar());
	}
	else
		MessageBox(m_hWnd,  L"演算式が正しくありません。", L"エラー", MB_OK | MB_ICONEXCLAMATION);

	return TRUE;
}

bool CMyWnd::OnIdok() {

	SendMsg(WM_CLOSE, 0, 0);
	return TRUE;
}
