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

CWindow::OnCommand

CWindowにメニューを実装する・・・。
ただ、メニューの表示自体はリソースファイルに定義するだけでできるので、加えてOnCommandハンドラと、それぞれのメニュー項目のコマンドハンドラを実装する・・・。

resource.hに、

リソースID番号・・・。
OnCommand.rcに、

メニューリソースの定義を書く・・・。

Window.hに、

OnCommandと各メニュー項目ごとのハンドラを用意・・・。
更新ハンドラは、いまのところ不要・・・。

OnItem1_1は、

"Item1-1"と表示・・・。

OnItem1_2~OnItem3_3も同様に・・・。

OnCommandは、

switch-case文で、LOWORD(wParam)の値で振り分ける・・・。
で、この場合ならID_ITEM_1_1なので、OnItem1_1を呼び、TRUEを返す・・・。
これをItem3-3の分まで書く・・・。

どれでもない場合は、

FALSEを返す・・・。

DynamicWindowProcに、

WM_COMMAND時の処理を追加・・・。
OnCommandがTRUEなら、0を返す・・・。FALSEなら0以外、つまり1を返す・・・。
(OnCommandの戻り値の真偽値とWM_COMMANDの戻り値の真偽値が逆なので注意!)

f:id:BG1:20150616193535p:plain

メニューが表示されてるので、

f:id:BG1:20150616193617p:plain

たとえばItem3-3を選択すると、

f:id:BG1:20150616193703p:plain

このように表示される・・・。

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