修改菜单项

Modifying menu items

本文关键字:菜单项 修改      更新时间:2023-10-16

我有一个弹出菜单,我想在显示之前修改它。我实际上可以很好地修改菜单项的字符串。问题是,这使得它变得毫无用处,因为当点击修改后的菜单项时什么都不会发生

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);

ModifyMenu的调用将菜单的ID设置为零(通过第三个参数)。你需要保持ID不变。

如果这很尴尬,SetMenuItemInfo API允许您在不更改ID的情况下更改字符串。