在做一个工程时,经常会用到MDI多文档工程。在MDI中,有主框架和众多子框架。
如果要动态的更改主框架的菜单,很容易。在CMainFrame类中的OnCreate函数返回之前,处理即可。
代码如下:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CMDIFrameWnd::OnCreate(lp CreateStruct) == -1) return -1; CMenu *pMenu = NULL; pMenu = GetMenu(); BOOL bDelete = FALSE; bDelete = pMenu->DeleteMenu(2,MF_BYPOSITION); DrawMenuBar(); return 0; }
可是在子框架中这样用,就会出错,主要因为在子框架中用 GetMenu()无法获取子框架对应菜单的句柄m_hMenu。所以必须用一下方法即可。代码位置在子框架所对应的CMyFrame类中
int CProjectFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1) return -1; CMenu *pMenu = NULL; pMenu = CMenu::FromHandle(m_hMenuShared); //此处为更改 BOOL bDelete = FALSE; bDelete = pMenu->DeleteMenu(2,MF_BYPOSITION); DrawMenuBar(); return 0; }