先在资源里创建一个IDR_TELBOOK菜单,然后在CMainFrame类的OnCreate函数中:
SetMenu(NULL);
m_mMenu.LoadMenu(IDR_TELBOOK);
SetMenu(&m_mMenu);
m_mMenu.GetSubMenu(0)->AppendMenu(MF_STRING,101,"TelPhone");
编译能通过,运行程序就崩溃,怎么回事呢?

解决方案 »

  1.   

    看MFC对SetMenu的实现,不应该调用SetMenu(NULL),会引起NULL指针引用。另外从程序上下文件,你加这一句也没什么意义,只要SetMenu(&m_mMenu)就行了。_AFXWIN_INLINE BOOL CWnd::SetMenu(CMenu* pMenu)
    { ASSERT(::IsWindow(m_hWnd)); return ::SetMenu(m_hWnd, pMenu->GetSafeHmenu()); }
      

  2.   

    SetMenu(NULL);应该是没有问题的,可以这么写
      

  3.   

    m_mMenu.GetSubMenu(0)->AppendMenu(MF_STRING,101,"TelPhone");
    这行代码的后面AppendMenu(MF_STRING,101,"TelPhone")出了问题,无法在其子菜单下创建一个菜单项。