c++ - 修改菜单项

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

最佳答案

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

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

关于c++ - 修改菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14796341/

相关文章:

mfc - 加速器 的中文翻译

c++ - 填充 C++ std::map 时丢失字段

c++ - 如何获取保存当前选定文本的小部件的名称? (QTextCharFormat)

c++ - Cpp 文件说 [converted] 是一堆随机字符

c - 如何正确使用 CopyFileEx 和 CopyProgressRoutine 函数?

c++ - 控件的 CWnd::DefWindowProc 上 Stackoverlow 异常的原因是什么

c++ - 创建具有专业外观(和行为!)的表单设计器

c++ - 使用 g++-arm-linux-gnueabi 时包含 C++ 系统头文件的正确方法?

c++ - 如何解析成员指针非类型模板参数的组件类型

winapi - CCombobox : how to set text color of Editable area text when combobox style is dropdown in win32