読者です 読者をやめる 読者になる 読者になる

CWinApp::InitInstance

CWinApp::InitInstanceは、アプリケーションの初期化を行うメンバ関数・・・。

CWinApp::InitInstance

CWinAppの派生クラスを定義し、CWinAppからこのメンバ関数をオーバーライドして、独自の初期化処理を書く・・・。
初期化成功ならTRUEを返し、失敗ならFALSEを返す・・・。

今回は、初期化処理というより、戻り値にTRUEを返したときと、FALSEを返したときの違いを確認する・・・。
"はい", "いいえ"選択型メッセージボックスを表示し、"はい"ならTRUEを返して、初期化成功とする・・・。
その場合は、もうひとつオーバーライドしておいたメンバ関数Runが実行され、メッセージボックスで"Run"が表示される・・・。
"いいえ"の場合は、FALSEを返す・・・。Runは実行されず、プログラムは終了する・・・。

CWinApp_.hでは、InitInstanceとRunをオーバーライドしておく・・・。
このクラスをさらに継承したクラスからもオーバーライドできるようにvirtualをつけておく・・・。

CWinApp_.cppのInitInstanceの定義では、

MB_YESNOなAfxMessageBoxで、IDYES("はい")ならTRUEを返し、そうでない("いいえ")ならFALSEを返す・・・。

Runでは、

MB_OKなAfxMessageBoxで、"Run"と表示する・・・。

実行すると、まずInitInstanceが呼ばれて、

f:id:BG1:20150418222441p:plain

と、訊いてくるので、"はい"を選択・・・。
すると、

f:id:BG1:20150418222609p:plain

Runを呼んで、"Run"と表示される・・・。

"いいえ"なら、Runは呼ばれずに終了する・・・。

InitInstanceの戻り値で、このように動作が変わる・・・。

Sample/CWinApp_.h at master · bg1bgst333/Sample · GitHub
Sample/CWinApp_.cpp at master · bg1bgst333/Sample · GitHub