我有一个弹出菜单,我想在显示之前对其进行修改。我实际上可以很好地修改菜单项的字符串。问题是,这使它变得无用,因为单击修改后的菜单项时什么也没有发生。
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 的情况下更改字符串。
关于c++ - 修改菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14796341/