ページ 11

ウィンド右上の閉じるボタンについて

Posted: 2012年2月22日(水) 23:56
by ぬこ
お世話になっております。
ちょっと疑問が生じまして、わかる方いましたら返答いただけるとありがたいです。

dxlibを用いて作成したアプリケーションの右上の閉じる(×)ボタンについてですが、
このボタンを押下されたとき、終了する前に終了処理を追加したいのですが方法がわかりません。

ご存知のかたがいらっしゃいましたらアドバイスをいただけたらと思います。
よろしくお願いします。

Re: ウィンド右上の閉じるボタンについて

Posted: 2012年2月23日(木) 00:58
by a5ua
公式リファレンスには書かれていませんが、
SetWindowUserCloseEnableFlag
GetWindowUserCloseFlag
といった関数を使えば、実現できると思います。

参考までにコードを書いてみました。

コード:

#include "DxLib.h"

int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
    ChangeWindowMode(TRUE);
    if (DxLib_Init() != 0) return -1;
	SetDrawScreen(DX_SCREEN_BACK);

	// ユーザーが×ボタンを押しても自動的に終了しないようにする
	SetWindowUserCloseEnableFlag(FALSE);
 
    while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0){
		ClearDrawScreen();

		// ×ボタンが押されたかどうかを取得する
		if (GetWindowUserCloseFlag(TRUE)) {
			// 終了確認処理(「はい」が押されたら終了)
			if (MessageBox(GetMainWindowHandle(), _T("終了しますか?"), _T("確認"), MB_YESNO) == IDYES) {
				break;
			} else {
				printfDx(_T("終了がキャンセルされました\n"));
			}
		}
		ScreenFlip();
    }
 
    DxLib_End();
	
	return 0;
}

Re: ウィンド右上の閉じるボタンについて

Posted: 2012年2月23日(木) 06:55
by nullptr
http://hpcgi2.nifty.com/natupaji/bbs/pa ... st&no=1602
公式の板のです。こちらも参考になるかと。

Re: ウィンド右上の閉じるボタンについて

Posted: 2012年2月24日(金) 00:16
by ぬこ
>> a5ua様、 lowe様

ご回答ありがとうございます。
御二方ともサンプルコードの情報まで提供してくださったので、すぐに試すことができました。
終了前に回線切断の処理を入れたかったのですが、これで実現できそうです。

ありがとうございました。
完璧な回答でした。