CMainWindow、そしてCUserControlにも、Destroyを実装する。
MainWindow.hに、
Destroyを追加。
MainWindow.cppで、
こう定義する。
UserControl.hにも
Destroyを追加し、
UserControl.cppでは、
MessageBoxを出すためにオーバーライドしてるけど、これ定義しなくても基底クラスのCWindow::Destroyで破棄される。
CMainWindow::Destroyの呼び出しは、
ここや、
ここ。
閉じる時にOKしたら、
ここに来る。
中はこうで、今度はCUserControlを破棄する。
これが出て、
今度はここに来る。
CUserControlのウィンドウ破棄したので、今度はオブジェクト開放。
CUserControlの基底クラスCWindowのデストラクタでDestroy。
でオブジェクトが解放。
子ウィンドウの破棄は終わったので、このウィンドウの閉じる処理。
メインウィンドウが閉じられたので、CMainWindowのOnDestroy。
ここに来て、
メッセージループ終了。
今度はExitInstanceのメインウィンドウ解放で、
デストラクタからDestroy。
これはそういうこと。
CUserControlは破棄されてるし、CMainWindowもウィンドウは破棄されてるから、意味ないけども。
まあ、でもこれでCMainWindowオブジェクトも破棄された。
(WM_CLOSEじゃない場合は、CMainWindow::Destroyにはウィンドウの破棄も要るなあ。いや、ウィンドウの破棄だけをするメソッドかな。ここでいうDestroyは子ウィンドウの破棄なんだよね。)
Test/winapi/CUserControl/Destroy/src/CUserControl at master · bg1bgst333/Test · GitHub