0

C++Builder 2007 を使用して、Windows 用のプログラムをコーディングしています。

私のプログラムが閉じられると、閉じられた方法に応じて異なる動作をするはずです:

  1. ユーザーがアプリケーションのウィンドウの「X」をクリックしました: アプリケーションのユーザー ログインに戻ります。
  2. プログラムは TaskManager 経由で終了します: その場でプログラムを終了します。プログラムが Windows のシャットダウンをブロックしてはならないため、これは特に重要です。

TForm::OnClose()いずれかの OR を取得するのは簡単です。or を実装しOnCloseQuery()てイベントを処理します。ただし、どちらもイベントの原因を示していません。close イベントの実際の原因を知る別の方法はありますか?

4

1 に答える 1

1

メインフォームをWM_SYSCOMMANDメッセージにリンクさせることができます。コマンド タイプでこのメッセージを受け取った場合SC_CLOSE、ユーザーが閉じるボタンをクリックしたか、Alt+F4 を押したか、またはシステム メニューから [閉じる] を選択したことがわかります。次に、(既定のアクションでフォームを閉じるのではなく) 好きなことを行うことができます。

たとえば、ログイン ダイアログを再度表示できます。

これは、メイン フォーム/アプリケーションを閉じる他の方法には影響しないため、タスク マネージャーの (最初のタブ) からアプリケーションを閉じることができます。

[以前、この Q は Delphi とタグ付けされていました。このため、私の回答の最初のバージョンには、このアイデアの Delphi 実装が含まれています。]

于 2013-03-25T16:16:13.673 に答える