我正在尝试获取一个子菜单,以便我可以在它显示之前对其进行更改。
所以我为我的窗口创建了一个 OnInitMenu()
处理程序。我计划使用 pMenu->GetMenuItemInfo()
来获取子菜单。
但是,这似乎行不通。为了找到我想要的菜单,我必须提供菜单命令 ID(我不认为硬编码项目位置令人满意)。但是打开子菜单的菜单项没有命令 ID。我可以获得该子菜单中存在的菜单命令,但我仍然没有菜单本身。
如何在不依赖 MF_BYPOSITION
的情况下找到嵌套在主菜单中的子菜单?
最佳答案
我对同一问题的解决方案是创建一个辅助函数来搜索菜单并根据菜单名称返回位置。
int CEnviroView::FindMenuItem(CMenu* Menu, LPCTSTR MenuName) {
int count = Menu->GetMenuItemCount();
for (int i = 0; i < count; i++) {
CString str;
if (Menu->GetMenuString(i, str, MF_BYPOSITION) &&
str.Compare(MenuName) == 0)
return i;
}
return -1;
}
关于windows - MFC中如何获取子菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10365459/