XP sp3
VS2005
C++ MFC
项目里有个功能是把系统的菜单都变成中文或英文,
而MDI的菜单有两个,一个是平时看到的,也就是子框架childframe的菜单menu,
另一个是把所有子框架关掉后的菜单,也可以叫做主框架菜单,
这两个菜单在资源里都可以找得到,当然这两个菜单是不一样的,
用平常的getmenu()的方法获得到的是主框架的菜单,
而子框架的菜单却不好获得,
搜索了很久,才找到解决办法:
以下方法可以获得子框架菜单
我是写在CMainFrame::OnCreate()
POSITION psDocTemp = AfxGetApp()->GetFirstDocTemplatePosition();
while (psDocTemp)
{
CMultiDocTemplate *pDocTemp = (CMultiDocTemplate*)AfxGetApp()->GetNextDocTemplate(psDocTemp);
CMenu *pMenu = CMenu::FromHandle(pDocTemp->m_hMenuShared);
pMenu->ModifyMenu(0, MF_BYPOSITION, 0, _T("文件"));
}
这里用获得到的菜单指针对菜单进行修改。
链接:http://group.gimoo.net/review/7295
还有个问题:
子框架是否是最大化也有个问题,
无最大化时的菜单是正常的,如下图
而最大化时,菜单的第一个位置会多一个东西,
这时以子框架是否最大化来判断菜单的修改位置了。