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

CWindow

MFCのCFrameWndに相当する基本的なウィンドウクラスCWindowを作成する・・・。

まず、Window.hのCWindowの定義では、

ウィンドウハンドルm_hWndとコンストラクタ、デストラクタを用意・・・。

といってもWindow.cppでは、

コンストラクタでm_hWndをNULLにしてるだけ・・・。

CApplicationのメンバとして、

このCWindowクラスのオブジェクトポインタm_pMainWindowを用意・・・。

InitInstance内にて、

RegisterClassの後に、CWindowオブジェクトを作成し、m_pMainWindowに格納・・・。
その後、

CreateWindowの戻り値のウィンドウハンドルをm_pMainWindow->m_hWndに格納・・・。
失敗してNULLなら、エラー・・・。

成功ならm_pMainWindow->m_hWndをShowWindowに渡してウィンドウ表示・・・。

また、m_pMainWindow->m_hWndは、

OnIdleにおけるデバイスコンテキスト取得、解放にも使っている・・・。
(なので、このプログラムにはグローバル変数g_hWndがない・・・。)

ExitInstanceでは、

m_pMainWindowにアドレスが入っていたら(NULLでなかったら)、deleteで削除する・・・。

ExitInstanceは、Runが終了する直前だけではなく、

InitInstanceに失敗したときも呼ばれるので、メモリリークの心配はない・・・。

f:id:BG1:20150514151719p:plain

変わらずlCountを表示できた・・・。

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