MFCのOnOk()、OnCancel()、OnClose()、OnDestroy()の違い
MFC には OnOk()、OnCancel()、OnClose()、OnDestroy() という 4 つの異なる関数があり、それぞれの用途と呼び出しタイミングが異なります。
- onOK:()
- 「決定」ボタンがダイアログ上でクリックされた際に呼び出されます。
- 「同意」ボタン押下の後のユーザーのクリックを処理するためのロジック、例えば入力されたデータの検証、保存などを行う
- モーダルダイアログの場合、OnOk()関数の呼び出し後に閉じられます。
- ダイアログボックスの設計によっては、OnOk() 関数で CDialog::OnOK() を呼び出してダイアログボックスを閉じることができます。
- OnCancel()
- ダイアログの「キャンセル」ボタンがクリックされたか、ESC キーが押された時に呼び出される。
- 「キャンセル」ボタンが押された後の処理ロジックで、入力されたデータの削除や操作のキャンセルなどを行う。
- モーダルダイアログの場合、OnCancel()関数を呼び出すとダイアログが閉じられます。
- ダイアログのデザインによっては、CDialog::OnCancel()をOnCancel()関数内で呼び出してダイアログを閉じることができます。
- クローズ時に実行
- ユーザーがダイアログの[閉じる]ボタンをクリックしたとき、またはALT+F4を押したときに呼び出します。
- ユーザーがダイアログをクローズした後のロジック(保存やキャンセル動作など)を処理するために使用します。
- OnClose()関数を呼び出すと、ダイアログボックスは閉じます。
- ダイアログのデザインによって、ダイアログを閉じるためにOnClose()関数内でCDialog::OnClose()をコールすることができる。
- OnDestroy():
- ダイアログが破棄された時に呼び出されます。
- メモリ解放やファイルのクローズなど、リソース解放・クリーンアップの操作を行う。
- OnDestroy()関数が呼び出されると、ダイアログは破棄されます。
- ダイアログのデザインによっては、CDialog::OnDestroy() を OnDestroy() 関数内で呼び出してダイアログを破棄できます。
OnOk()、OnCancel()、OnClose()、OnDestroy() は、MFC においてダイアログ関連のイベント(ユーザーの操作)を処理するための関数で、呼び出されるタイミングによって処理されるロジックが異なります。