爱问知识人 爱问教育 医院库

vc高手来,谢谢了

首页

vc高手来,谢谢了

我做了一个“dialog based”的mfc应用程序,里面没有“menu”资源,我在“ResourceView”中插入了menu资源,下面就是装载资源了,在C***Dlg类中新建一个
CMenu对象m_pMenu,然后再初始化函数中加上
m_pMenu->LoadMenu(IDR_MENU),这是程序编译完全没问题,可是一运行就会出现下图这个对话框,程序就无法运行了,后来我又加上了一句话,
m_pMenu->EnableMenuItem(IDR_MENU,TRUE),可是还是不行,请问这是怎么回事?

提交回答
好评回答
  • 2018-04-04 09:24:15
      把你的程序中新建CMenu对象的语句贴出来看一下,从你的命名看来,你用的是CMenu的指针而不是对象,那么你是否正确的在调用初始化函数中新建了这个对象呢?
    你确定是用诸如
    CMenu* m_pMenu = new CMenu()这样子新建的吗?
    程序出现图中所示,可能是因为你在调用m_pMenu->时指针没有赋初值,或者指针值置为NULL了但是没有正确的新建一个CMenu对象,最好贴一下创建对象的代码出来。
       ========================================== 补充回答你其他的问题 如果你只是想在对话框上显示一个菜单的话,可以很简单的实现 方法一:在对话框的属性列表里面选Menu-->下接框里面选中你已经新建好的那个菜单名,一般默认是IDR_MENU1,然后确定重新编译即可 方法二:为对话框添加消息函数OnCreate,并在里面显式的加载菜单项,代码如下: int CHelpMFCDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialog::OnCreate(lpCreateStruct) == -1) return -1; // TODO: 在此添加您专用的创建代码  CMenu menu; menu。
      LoadMenu(IDR_MENU1); SetMenu(&menu); menu。Detach(); return 0; } 当然,如果你喜欢用指针的话,也可以在这个函数里面用指针 int CHelpMFCDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialog::OnCreate(lpCreateStruct) == -1) return -1; // TODO: 在此添加您专用的创建代码  m_pMenu = new CMenu(); m_pMenu->LoadMenu(IDR_MENU1); SetMenu(m_pMenu); m_pMenu->Detach(); return 0; } 不过记得一定要在退出之前delete掉。
       个人比较推荐第一种方式,最省心。 参考 。

    A***

    2018-04-04 09:24:15

其他答案

    2018-04-04 12:24:15
  • c++组的人说估计是你的文件路径的问题不是全路径,有可能打不开,还说什么捕获异常什么玩意的确定是什么问题...

    路***

    2018-04-04 12:24:15

  • 2018-04-04 09:24:15
  •   1。属性->样式->勾上 系统菜单
    2。属性->常规->菜单 就OK了
    CMenu * m_pMenu
    m_pMenu=new CMenu()//在堆中分配一块空间存储CMenu对象
    m_pMenu->LoadMenu(IDR_MENU)//加载菜单资源
    但是m_pMenu并没有同系统菜单关联起来。
       试看下面代码: 1。CMenu * m_pMenu1 m_pMenu1=new CMenu m_pMenu1->LoadMenu(IDR_MENU1) 2。CMenu * m_pMenu2 m_pMenu2=new CMenu m_pMenu->LoadMenu(IDR_MENU2) 那么该显示IDR_MENU1还是IDR_MENU2呢? 实际上都不显示,应该它们都没同系统菜单关联起来 当对话框要建立时,它发出WM_CREATE消息 用类向导,在OnCreate()下加上: CMenu * m_pMenu m_pMenu=new CMenu m_pMenu->LoadMenu(IDR_MENU)//直到这步为止,尚未关联,也即是,如果就此结束,菜单栏依然不会显示 SetMenu(m_pMenu)函数:Sets the current menu to the specified menu。
      //摘自MSDN 也即是将m_pMenu同系统菜单关联 。

    徐***

    2018-04-04 09:24:15

  • 2018-04-04 06:24:15
  • 什么意思,完全不懂啊。

    林***

    2018-04-04 06:24:15

类似问题

换一换
  • VC++ 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):