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

CWindow::OnCreate

DynamicWindowProcの中のWM_CREATE時の処理を、OnCreateを作ってそちらに移す・・・。
そうすることで、OnCreateなどのハンドラごとにオーバーライドできる・・・。

Window.hに、

OnCreateを宣言・・・。
引数は、MFCのCWnd::Createと同じCreateStruct構造体ポインタlpCreateStruct・・・。

Window.cppに、

と定義・・・。
ウィンドウ作成成功にするために0を返す・・・。

あとはこれを、

DynamicWindowProcのWM_CREATEのところで呼ぶ・・・。
OnCreateが返した0をそのままDynamicWindowProcの戻り値として返す・・・。
最終的にStaticWindowProcの戻り値になるのでウィンドウ作成成功となる・・・。

OnCreateに続いて、OnDestroyも実装する・・・。

Window.hに、

と宣言・・・。

Window.cppでは、

と定義・・・。

PostQuitMessageで、ウィンドウの破棄とともにメッセージループ終了を要求・・・。

これを、

WM_DESTROYのところで呼ぶ・・・。

f:id:BG1:20150520222219p:plain

これで、OnCreate、OnDestroy単位でオーバーライドできるようになった・・・。

https://github.com/bg1bgst333/Test/blob/master/winapi/CWindow/OnCreate/src/OnCreate/OnCreate/WinMain.cpp
https://github.com/bg1bgst333/Test/blob/master/winapi/CWindow/OnCreate/src/OnCreate/OnCreate/Application.h
https://github.com/bg1bgst333/Test/blob/master/winapi/CWindow/OnCreate/src/OnCreate/OnCreate/Application.cpp
https://github.com/bg1bgst333/Test/blob/master/winapi/CWindow/OnCreate/src/OnCreate/OnCreate/Window.h
https://github.com/bg1bgst333/Test/blob/master/winapi/CWindow/OnCreate/src/OnCreate/OnCreate/Window.cpp