修改菜单项

时间:2013-02-10 09:31:00

标签: c++ mfc

我想要在显示之前修改一个弹出菜单。我实际上可以修改菜单项的字符串。问题是,当单击修改后的菜单项时,没有任何反应会使它变得无用。

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

1 个答案:

答案 0 :(得分:0)

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

如果这很尴尬,SetMenuItemInfo API允许您更改字符串而不更改ID。