我在MainFrm.cpp 的oncreate末尾添加
GetMenu()->GetSubMenu(1)->CheckMenuItem(0, MF_BYPOSITION | MF_CHECKED);
程序一运行就出错(编译无错误,可运行 ,但是崩溃)
怎么回事啊..

解决方案 »

  1.   

    GetMenu()->GetSubMenu(0)->CheckMenuItem(0, MF_BYPOSITION | MF_CHECKED); 
    可以运行吗?
      

  2.   

    CMenu * pMenu = GetMenu()->GetSubMenu(1);
    看是否为空
      

  3.   


    值0xcccccccc  类型CMenu
    非空..
      

  4.   


    这个值绝对是错误的,GetMenu()或者GetSubMenu()中有意个调用失败,应该逐个调试一下
      

  5.   

    调试,或者直接运行都是程序崩溃.....显示xxx已经停止工作.
      

  6.   

    试了一下.
    CMenu *ss = GetMenu();返回的是0x000000{CMenu}
    应该是返回有问题.怎么办呢?Win7x64,右下角的输出好多加载的多数是x64文件.是不是和这个有关系?
      

  7.   

    GetMenu() 返回0x000000 代表是空指针, 你查看一下是否真的加载了菜单资源。。用菜单的时候,除了系统自带的菜单,自定义的话要先创建才行。比如: CMenu *pMenu;
          pMenu = new CMenu();
          pMenu->Load(XXXXXX);
          pMenu->GetSubMenu(X)......GetMenu() 返回了空,就是代表没有菜单资源。。
      

  8.   

    mfc90d.dll
    的问题..通过google已经解决.
      

  9.   

    是不是和我们使用的VS2010,fm4.0有关?
    我也碰到这问题,希望能有详解
      

  10.   

    我也遇到同样情况了, 怀疑是在vs2010下新建mfc工程时, 提供了多种风格的界面引起的.我是在 工程向导中,(Next) 选择MFC经典风格菜单  才能正常获取GetMenu()的
      

  11.   

    是不是和我们使用的VS2010,fm4.0有关?
    我也碰到这问题,希望能有详解
      

  12.   

    我遇到的情况:
    若定义m_Menu为局部变量  用getmenu()在m_Menu作用范围外时获得的指针是临时指针,将无法使用
    CWnd::GetMenu 
    CMenu* GetMenu( ) const;
    Return Value
    Identifies the menu. The value is NULL if CWnd has no menu. The return value is undefined if CWnd is a child window.The returned pointer may be temporary and should not be stored for later use.
      

  13.   

    GetMenu无法获取句柄指针。试试新建工程的经典菜单。