トップページ > 過去ログ > 記事閲覧
右上の×ボタン
名前:あちゃお 日時: 2010/02/02 19:59

ウィンドウ右上の×ボタン押したとき、ウィンドウが閉じながらプロセス動きますよね? 普通はそのあとライブラリ終了関数を呼び出して0をreturnして完全終了させると思うのですが ×ボタンを押されたらウィンドウを閉じずに終了確認を出すことは可能でしょうか? ダイアログだろうがグラフィック描写だろうが取りあえず ×ボタンが押されたら〜 の処理はありますでしょうか? →はい で終了 →いいえ で復帰 のような形です

Page: 1 |

Re: 右上の×ボタン ( No.1 )
名前:いっち 日時:2010/02/06 20:36

"SetWindowUserCloseEnableFlag"関数と"GetWindowUserCloseFlag"関数を使用すれば可能だと思います。 "SetWindowUserCloseEnableFlag"関数にFALSEを設定すると、Alt+F4やCloseボタンで終了しなくなります。 "GetWindowUserCloseFlag"関数は終了イベントが発生するとTRUEを返します。 引数にTRUEを設定すると、次回また終了イベントが発生するまでFALSEを返すようになります。 //-- 以下サンプル --// #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { SetWindowUserCloseEnableFlag( FALSE ); ChangeWindowMode( TRUE ); if ( DxLib_Init( ) == -1 ) return -1; SetDrawScreen( DX_SCREEN_BACK ); while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { if ( GetWindowUserCloseFlag( FALSE ) ) { if ( CheckHitKey( KEY_INPUT_N ) ) { GetWindowUserCloseFlag( TRUE ); } else if ( CheckHitKey( KEY_INPUT_Y ) ) { break; } ClearDrawScreen( ); DrawString( 0, 0, "終了処理中 y/n", GetColor( 255, 255, 255 ) ); ScreenFlip( ); continue; } ClearDrawScreen( ); DrawString( 0, 0, "通常処理中", GetColor( 255, 255, 255 ) ); ScreenFlip( ); } DxLib_End( ); return 0; } ※バグっていたので修正しました。 ※馬鹿なことをやっていたのでさらに修正しました。

Page: 1 |