トップページ > 過去ログ > 記事閲覧
×ボタンを押したときのイベント
名前:nakamura 日時: 2007/12/06 20:23

 はじめまして。  早速ですが質問です。  「ウィンドウ右上の×ボタン」を押したときに、ポップアップ等で終了確認を行いたいのです。  しかし、DXライブラリはどうやら内部的に判定を行っているためか、「WindowProc」を作ってみても反応しません。  過去ログより、「SetWindowUserCloseEnableFlag」を使うと、終了を無効化できる所までは分かりましたが、それ以上が分かりません。  自分で調べられる範囲で、DXライブラリの内部も調べましたが、これ以上の結果は得られませんでした。  どうかご教授のほど、よろしくお願いします。  長々失礼しました。

Page: 1 |

Re: ×ボタンを押したときのイベント ( No.1 )
名前:優柔不断 日時:2007/12/06 23:05

プロシージャを登録する関数がありますが、それを使います。 SetHookWinProc()で登録して、WM_CLOSEが来たらMessageBox()関数を呼び出して、それで終了であれば、 DxLib_End()を呼び出して、exit()に終了コード(0でいい)を渡すという感じになります。
Re: ×ボタンを押したときのイベント ( No.2 )
名前:nakamura 日時:2007/12/07 22:06

 すばやい回答、有難うございます。  おかげさまで、対処が完了いたしました。
Re: ×ボタンを押したときのイベント ( No.3 )
名前:管理人 日時:2007/12/09 13:35

もう解決されたとのことですが、一応 SetWindowUserCloseEnableFlag を 使用する場合の方法を・・・ SetWindowUserCloseEnableFlag( FALSE ); を使用した後は以下の関数で ×ボタン、または ALT+F4 がおされたかどうかを判断します。 // ウインドウの閉じるボタンが押されたかどうかを取得する int GetWindowUserCloseFlag( int StateResetFlag ); 戻り値が TRUE の場合は×ボタン、または ALT+F4 がおされたという ことになりますので、TRUE が返ってきた場合にそれに応じた処理を 行うこととなります。StateResetFlag に TRUE を渡すと、状態がリセット されますので、対応処理が完了して再び×ボタン、または ALT+F4 が押される まで FALSE が返ってくるようになって欲しい場合は StateResetFlag に TRUE を渡します。(そうではない場合は FALSE を渡します)
Re: ×ボタンを押したときのイベント ( No.4 )
名前:nakamura 日時:2007/12/11 01:57

 そのような方法もありましたか。  双方を比べてみた結果、管理人さんの方法が記述内容が短く簡略になるようなので、そちらを採用させて頂きます。

Page: 1 |