MDIアプリの終了タイミングを捕まえるには?

解決


WIZ  2004-10-14 04:32:29  No: 11375

D6でMDIのエディタアプリケーションを作成しています。
MDIChildのOnCloseQueryイベントで編集中の場合は保存するかどうか問い合わ
せるダイアログを表示しています。
MainForm(MDIForm)のOnCloseQueryイベントではMDIChildが複数ある場合、
編集中のMDIChildを全部保存するか全部破棄するかのダイアログを表示したい
のですが、実際にアプリケーションを終了させると、MIDChildのOnCloseQuery
イベントが先に発生してしまい困っています。
MainFormの右上の×をクリックされた後で、MDIChildのOnCloseQueryイベント
が発生する前のタイミングで処理をしたい場合、どうすれば良いでしょうか?


WIZARD of OZ  2004-10-14 15:53:15  No: 11376

MainFormのOnCloseQueryイベントで問い合わせするのをやめて、
MainFormのWndProcをオーバーライドして、WM_CLOSEメッセージを
処理すればいいでしょう。
※MDIChildCountが0でなければ問い合わせのダイアログを出す。


WIZ  2004-10-14 18:05:54  No: 11377

WIZARD of OZさん、お返事ありがとうございます。
WndProcのオーバーライドは良く分からないので、MainFormにWM_CLOSE
メッセージを処理する手続き
procedure WindowClose(var Msg: TMessage); message WM_CLOSE;
を追加する事で目的のタイミングを捕まえることができました。
アドバイスありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加