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

Aoi #1 ウィンドウのクラス化(CWindowの追加)

ウィンドウを表示したので、今度はウィンドウをクラス化・・・。

Window.hを追加し、

m_hWndはCWindowオブジェクトが持つウィンドウのハンドル・・・。
ウィンドウクラス登録関数のRegisterClassはstaticメンバとして持ってきた・・・。
ウィンドウクラス名を指定しない場合は、デフォルト引数として"CWindow"が指定される・・・。
Createは、必要な引数を全て指定するバージョンと、オーナーウィンドウ用の省略バージョン・・・。
そして、ShowWindow・・・。
最後に、メンバではないがWindowProcもこちらのソースに移動・・・。

Window.cppのCWindow::RegisterClassは、

インスタンスハンドルhInstanceとウィンドウクラス名lpctszClassNameを使って、ウィンドウクラスを登録・・・。

Createの"フル"版は、rightやbottomにCW_USEDEFAULTが指定してある時は、widthやheightにCW_USEDEFAULTを指定し、そうでない時は、right - left, bottom - topで幅を計算して指定する・・・。
あとはCreateWindowでウィンドウを作成し、ハンドルをm_hWndに格納・・・。

実際にWinMainから使うのはこっち・・・。
RECTを全てCW_USEDEFAULTで指定して上の"フル"版を呼び出す・・・。

ShowWindowはAPIを呼び出してるだけ・・・。

WindowProcはそのまま持ってきた・・・。

そして、WinMain.cppは、

CWindow::RegisterClassで"Aoi_MainWindow"を登録・・・。
CWindowオブジェクトを作成したら、Createでウィンドウ作成・・・。
あとはShowWindowしたあと、メッセージループを経て、抜けたらCWindowオブジェクトを解放・・・。
ちょっとWinMainが短くなった・・・。

f:id:BG1:20160627152611p:plain

特に変化なし・・・。

https://github.com/bg1bgst333/Aoi/tree/develop/winapi/win32_blank/vs14/src/Aoi