HandlerConditions

ソースコード上で、あるメニューアイテムに対するコマンドハンドラを定義するのではなく、動的にメニューアイテムとコマンドハンドラを紐づけたい。
そのために必要なのがHandlerConditions。
HandlerConditions.hで、

このような構造体を定義。
Window.hは、

WORD値をキー、HandlerConditions構造体ポインタを値とするm_mapHandlerMapを追加。
Window.cppは、

OnCommandの動作をこのように変更する。
MainWindow.hでは、

OnItem1_1の戻り値はintになり、OnCommand不要に。
MainWindow.cppは、

メニューアイテムとハンドラの追加と削除の処理。

選択すると
選択すると

選択すると、

ハンドラが反応する
ハンドラが反応する

ハンドラが反応する。

Test/winapi/HandlerConditions/HandlerConditions/src/HandlerConditions at master · bg1bgst333/Test · GitHub