另外,我在我的tabctrl里面获取主窗口的CWnd,为何非法操作?如下,我的CMainFrame是从CMDIFrameWnd继承的
在我的CTabCtrl里
CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;//正常
CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;    //非法操作由于我机器的内存条有问题,不能DEBUG,所以无法查明是为什么,请高人指点呀~

解决方案 »

  1.   

    还是不行,我在PreCreateWindow(CREATESTRUCT& cs)里面又加上了cs.style|=WS_MAXIMIZE; 
    可是一有子窗口关闭,下面的窗口又都缩小了,必须输入焦点才能最大化唉,这是怎么回事啊
      

  2.   

    主啊,我去掉下面函数的nCmdShow = SW_SHOWMAXIMIZED;发觉PreCreateWindow函数里面的cs.style¦=WS_MAXIMIZE根本就是无效的void CChildFrame::ActivateFrame(int nCmdShow) 
    {
        nCmdShow = SW_SHOWMAXIMIZED;//我去掉后发现子窗口创建后还是NORMAL
        CMDIChildWnd::ActivateFrame(nCmdShow);
    }
    无奈我又重载子窗口的Create函数,在里面ShowWindow(SW_SHOWMAXIMIZED); 
    结果还是不见最大化的窗口出来心烦意乱了!烦请大狭指点!
      

  3.   

    终于OK了,整整试了一宿~~~~~上面问题搞定了,但我又有新问题了这个问题是:我用了http://www.codeguru.com/menu/dockmenubar.shtml这个把菜单加进了MenuBar
    结果我用AfxGetMainWnd()->GetMenu();无法返回菜单,而我需要向菜单里动态的添加、删除菜单项,我不知道该怎么获得MenuBar里面的菜单。
      

  4.   

     我在我的InitInstance()里面如下:    CMenu* pTopMenu =((CMainFrame*)AfxGetMainWnd())->m_wndMenuBar.GetMenu();
        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,来人帮帮忙啊!
      

  5.   

    CMenu* pTopMenu =((CMainFrame*)AfxGetMainWnd())->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);//这里跳出对话框为什么会没菜?
      

  6.   

    我怎么不累,我以为CSDN解决问题很快的、、、结果折腾了一夜、、
      

  7.   

    ytweiwei:
       我也没有工作,别愁,你看我还不是折腾的蛮有兴致的;)
      

  8.   

    Faint~~~~~~~~~~~
    你的标题不是空格就是GGYY的一大堆鬼画符,鬼才知道你问的什么东西啊!也就懒得进来看了。
      

  9.   

    sxbyl(独孤求胜) (2001-4-27 14:58:00)  得0分 
    Faint~~~~~~~~~~~
    你的标题不是空格就是GGYY的一大堆鬼画符,鬼才知道你问的什么东西啊!也就懒得进来看了。  
      说的是,连我这样的低手都懒得进来,白菜,你怎么用我的名字?????
      

  10.   

    哈哈哈哈哈哈哈~我也疑问,ggyy怎和鬼符号联系起来了~yy你是驱鬼的?道士?(No beat me~:)我再重申一下问题,我把菜单放到http://www.codeguru.com/menu/dockmenubar.shtml这个MenuBar里面了,结果GetMenu不能返回菜单
    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);//这里跳出对话框,问题就在这?指点指点!!
      

  11.   

    CMenu* pTopMenu =((CMainFrame*)AfxGetMainWnd())->m_wndMenuBar.GetMenu();
        改为:
    CMenu* pTopMenu =((CMainFrame*)AfxGetApp()->m_hMainWnd().m_wndMenuBar.GetMenu();
    可以吗?
      

  12.   

    我试试!不过,pTopMenu是已经返回了的
    关键就是CMenu* pWindowMenu = pTopMenu->GetSubMenu(2);这里不能返回
      

  13.   

        CMenu* pTopMenu =((CMainFrame*)AfxGetMainWnd())->m_wndMenuBar.GetMenu();
    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);//这里跳出对话框,问题就在这?
      

  14.   

    Call this member function to obtain a pointer to the CMenu object of a pop-up menu. is  a pop-up menu??
      a pop-up menu exists at the given position; ???
      

  15.   

    千真万确,的确存在这个Pop-up Menuggyy,你下载http://www.codeguru.com/menu/dockmenubar.shtml
    在它的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);//这里跳出对话框,问题就在这?就知道我遇到的麻烦了!
      

  16.   

    我想可能是因为子窗口最大化时,菜单自动添加到主窗口上,
    子窗口的菜单的第三项有popupmenu,而你得到的主窗口菜单pTopMenu
    并没有第三项.
    我看可以采用ie的方法,把BUTTON放到TOOLBAR上,
    点击后用TrackPopupMenu弹出菜单.仅供参考!!
      

  17.   

    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*)AfxGetMainWnd())->m_wndMenuBar.GetMenu();
        改为:
    CMenu* pTopMenu =((CMainFrame*)AfxGetMainWnd())->GetMenu();