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

CWindow

WindowsAPI Test

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を表示できた・・・。

Test/WinMain.cpp at master · bg1bgst333/Test · GitHub
Test/Application.h at master · bg1bgst333/Test · GitHub
Test/Application.cpp at master · bg1bgst333/Test · GitHub
Test/Window.h at master · bg1bgst333/Test · GitHub
Test/Window.cpp at master · bg1bgst333/Test · GitHub