另外,我在我的tabctrl里面获取主窗口的CWnd,为何非法操作?如下,我的CMainFrame是从CMDIFrameWnd继承的
在我的CTabCtrl里
CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;//正常
CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd; //非法操作由于我机器的内存条有问题,不能DEBUG,所以无法查明是为什么,请高人指点呀~
在我的CTabCtrl里
CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;//正常
CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd; //非法操作由于我机器的内存条有问题,不能DEBUG,所以无法查明是为什么,请高人指点呀~
可是一有子窗口关闭,下面的窗口又都缩小了,必须输入焦点才能最大化唉,这是怎么回事啊
{
nCmdShow = SW_SHOWMAXIMIZED;//我去掉后发现子窗口创建后还是NORMAL
CMDIChildWnd::ActivateFrame(nCmdShow);
}
无奈我又重载子窗口的Create函数,在里面ShowWindow(SW_SHOWMAXIMIZED);
结果还是不见最大化的窗口出来心烦意乱了!烦请大狭指点!
结果我用AfxGetMainWnd()->GetMenu();无法返回菜单,而我需要向菜单里动态的添加、删除菜单项,我不知道该怎么获得MenuBar里面的菜单。
if(pTopMenu==NULL)
MessageBox(NULL,"没有菜单","MENU NO",MB_OK); 结果,正常,但一旦多了下面
CMenu* pWindowMenu = pTopMenu->GetSubMenu(4);
pWindowMenu->RemoveMenu(ID_WINDOW_NEW,MF_BYCOMMAND);
// 去掉打开、保存
pWindowMenu = pTopMenu->GetSubMenu(0);
pWindowMenu->RemoveMenu(ID_FILE_OPEN,MF_BYCOMMAND);
pWindowMenu->RemoveMenu(ID_FILE_SAVE,MF_BYCOMMAND);
pWindowMenu->RemoveMenu(ID_FILE_SAVE_AS,MF_BYCOMMAND);就非法操作,我没法DEBUG,来人帮帮忙啊!
if(pTopMenu==NULL)
MessageBox(NULL,"没有菜单","MENU NO",MB_OK); CMenu* pWindowMenu = pTopMenu->GetSubMenu(2);
if(pWindowMenu==NULL)
MessageBox(NULL,"没菜","MENU NO",MB_OK);//这里跳出对话框为什么会没菜?
我也没有工作,别愁,你看我还不是折腾的蛮有兴致的;)
你的标题不是空格就是GGYY的一大堆鬼画符,鬼才知道你问的什么东西啊!也就懒得进来看了。
Faint~~~~~~~~~~~
你的标题不是空格就是GGYY的一大堆鬼画符,鬼才知道你问的什么东西啊!也就懒得进来看了。
说的是,连我这样的低手都懒得进来,白菜,你怎么用我的名字?????
CMenu* pTopMenu =((CMainFrame*)AfxGetMainWnd())->m_wndMenuBar.GetMenu();
if(pTopMenu==NULL)
MessageBox(NULL,"没有菜单","MENU NO",MB_OK);//这里OK CMenu* pWindowMenu = pTopMenu->GetSubMenu(2);
if(pWindowMenu==NULL)
MessageBox(NULL,"没菜","MENU NO",MB_OK);//这里跳出对话框,问题就在这?指点指点!!
改为:
CMenu* pTopMenu =((CMainFrame*)AfxGetApp()->m_hMainWnd().m_wndMenuBar.GetMenu();
可以吗?
关键就是CMenu* pWindowMenu = pTopMenu->GetSubMenu(2);这里不能返回
if(pTopMenu==NULL)
MessageBox(NULL,"无菜","MENU NO",MB_OK);
pTopMenu =((CMainFrame*)AfxGetApp()->m_pMainWnd)->m_wndMenuBar.GetMenu();
if(pTopMenu==NULL)
MessageBox(NULL,"瘪菜","MENU NO",MB_OK);
结果上面两个都返回菜单了,正常,就是下面CMenu* pWindowMenu = pTopMenu->GetSubMenu(2);
if(pWindowMenu==NULL)
MessageBox(NULL,"没菜","MENU NO",MB_OK);//这里跳出对话框,问题就在这?
a pop-up menu exists at the given position; ???
在它的DEmo project的InitInstance()里的loadframe后面加上
CMenu* pTopMenu =((CMainFrame*)AfxGetMainWnd())->m_wndMenuBar.GetMenu();
if(pTopMenu==NULL)
MessageBox(NULL,"没有菜单","MENU NO",MB_OK);//这里OK CMenu* pWindowMenu = pTopMenu->GetSubMenu(2);
if(pWindowMenu==NULL)
MessageBox(NULL,"没菜","MENU NO",MB_OK);//这里跳出对话框,问题就在这?就知道我遇到的麻烦了!
子窗口的菜单的第三项有popupmenu,而你得到的主窗口菜单pTopMenu
并没有第三项.
我看可以采用ie的方法,把BUTTON放到TOOLBAR上,
点击后用TrackPopupMenu弹出菜单.仅供参考!!
if(pTopMenu==NULL)
MessageBox(NULL,"没有菜单","MENU NO",MB_OK);//这里OK CMenu* pWindowMenu = pTopMenu->GetSubMenu(2);
if(pWindowMenu==NULL)
MessageBox(NULL,"没菜","MENU NO",MB_OK);//这里跳出对话框,问题就在这?如下解决的:哈哈:
CMenu* pTopMenu =((CMainFrame*)AfxGetMainWnd())->m_wndMenuBar.GetMenu();
改为:
CMenu* pTopMenu =((CMainFrame*)AfxGetMainWnd())->GetMenu();