ソースコード上で、あるメニューアイテムに対するコマンドハンドラを定義するのではなく、動的にメニューアイテムとコマンドハンドラを紐づけたい。
そのために必要なのがHandlerConditions。
HandlerConditions.hで、
このような構造体を定義。
Window.hは、
WORD値をキー、HandlerConditions構造体ポインタを値とするm_mapHandlerMapを追加。
Window.cppは、
OnCommandの動作をこのように変更する。
MainWindow.hでは、
OnItem1_1の戻り値はintになり、OnCommand不要に。
MainWindow.cppは、
メニューアイテムとハンドラの追加と削除の処理。
選択すると、
ハンドラが反応する。