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

解決


WIZ  2004-10-14 04:32:29  No: 11375  IP: [192.*.*.*]

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  IP: [192.*.*.*]

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

編集    削除
WIZ  2004-10-14 18:05:54  No: 11377  IP: [192.*.*.*]

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

編集    削除