モーダル ダイアログ ボックスは、通常、スタック フレーム上に作成され、それらを作成した関数が終了すると破棄されます。 ダイアログ オブジェクトのデストラクターは、オブジェクトがスコープ外になったときに呼び出されます。
モードレス ダイアログ ボックスは、通常、親ビューまたはフレーム ウィンドウ (アプリケーションのメイン フレーム ウィンドウまたはドキュメント フレーム ウィンドウ) によって作成および所有されます。 既定の OnClose ハンドラーは DestroyWindow を呼び出し、ダイアログ ボックス ウィンドウを破棄します。 ダイアログ ボックスが単独で表示され、ポインターやその他の特別な所有権セマンティクスがない場合は、 PostNcDestroy をオーバーライドして C++ ダイアログ オブジェクトを破棄する必要があります。
また、OnCancel をオーバーライドし、その内部からDestroyWindow
を呼び出す必要があります。 そうでない場合、ダイアログ ボックスの所有者は、不要になったときに C++ オブジェクトを破棄する必要があります。