CWinApp::Runは、メッセージループ処理を行うメンバ関数・・・。
これに任せれば、メッセージループは勝手にやってくれる・・・。
そのため、これを普段オーバーライドすることはないが、今回は、派生クラスCWinApp_のInitInstanceでフレームウィンドウを作成し表示、CWinApp_のRunで親クラスCWinAppのRunを呼んでメッセーループにしばらく入る・・・。
ウィンドウを閉じると、CWinAppのRunから抜けるのでそのあとAfxMessageBoxで"Exit Run!"と表示する流れ・・・。
つまり、閉じるまでウィンドウを表示するということ・・・。
InitInstanceとRunをオーバーライド・・・。
InitInstanceでは、
今回は派生クラスとかではなく、MFCのCFrameWndを生成、m_pMainWndに入れる前にCFrameWndのオブジェクトポインタpFrameWndにも入れておく・・・。
こうすることで、引数の省略可能なCFrameWndのCreateも使えて便利・・・。
そのCreateでウィンドウ作成・・・。ウィンドウクラス名はNULLで既定のウィンドウクラスに、あとはウィンドウ名を指定するだけ・・・。
親クラスのCWndだと全部書かないといけないので、それに比べると楽・・・。
ShowWindowでm_nCmdShowに沿って表示・・・。
UpdateWindowは更新だが、今回は無くてもいいかな・・・。
成功なのでTRUEを返す・・・。
そして、Runが呼ばれる・・・。
CWinAppのRunに入ると、既定のメッセージループに入るので、ウィンドウを閉じるまでは抜けない・・・。
閉じると、メッセージループから抜けて、メッセージボックスによって"Exit Run!"が表示される・・・。
実行すると、
ウィンドウが表示される・・・。
この時点でCWinAppのRunの中のメッセージループに入っている・・・。
閉じると、
そのループから抜けて、"Exit Run!"と表示された・・・。
確かにRunはメッセージループだ・・・。
Sample/CWinApp_.h at master · bg1bgst333/Sample · GitHub
Sample/CWinApp_.cpp at master · bg1bgst333/Sample · GitHub