1

表示される前に変更したいポップアップ メニューがあります。メニュー項目の文字列を実際にうまく変更できます。問題は、変更されたメニュー項目をクリックしても何も起こらないため、これが役に立たなくなることです。

CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);

CWnd* pWndPopupOwner = this;
while(pWndPopupOwner->GetStyle() & WS_CHILD)
    pWndPopupOwner = pWndPopupOwner->GetParent();

// modify string
pPopup->ModifyMenu(1, MF_BYPOSITION | MF_STRING, NULL, oss.str().c_str());

pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, pWndPopupOwner);
4

1 に答える 1

0

への呼び出しModifyMenuは、(3 番目の引数を介して) メニューの ID をゼロに設定しています。その ID を同じにしておく必要があります。

それが面倒な場合は、SetMenuItemInfoAPI を使用すると、ID を変更せずに文字列を変更できます。

于 2013-02-10T09:32:56.660 に答える