CMenuでメニュー項目の文字列を動的変更

SetMenuItemInfoで変更できます。

TCHAR buf[] = TEXT("新メニュー文字列");
MENUITEMINFO mii = { sizeof(mii) };
mii.fMask = MIIM_STRING;
mii.dwTypeData = buf;

pMenu->SetMenuItemInfo(2, &mii, TRUE);

セパレータも意識して項目の順番指定してね。


SetMenuItemInfo関数でメニュー項目のデータを取得する場合、引数となるMENUITEMINFO 構造体のcbSizeメンバにsizeof(MENUITEMINFO)を代入してから関数を使用する必要がある。
また、設定したいデータはfMaskメンバを指定しなければならない。
このfMaskメンバを指定することでどのメンバ変数にデータが設定されるかが変わる。


ネタ元