none
关于vs2010中MFC添加菜单出现的问题 RRS feed

  • 问题

  • 我建立了一个MFC单文档应用程序,unicode字符集前面的√被我取消的。

    我在Cmainframe类中增加了对象CMenu menu.

    我在mainfrm.cpp的oncreate()函数中然后添加代码

    menu.CreatePopupMenu();
    GetMenu()->AppendMenu(MF_POPUP,(UINT)menu.m_hMenu,"TEST");
    编译没有问题,运行到上面最后一句时出现如下错误,求大神解答

    menu2.exe 中的 0x538afd6c (mfc100d.dll) 处有未经处理的异常: 0xC0000005: 读取位
    置 0x00000004 时发生访问冲突

    2011年12月22日 14:01

答案

  • 用默认的选项创建应用的话,GetMenu()应该返回null,因为换了BCG的menu bar。要替换掉menu bar的菜单的话,记得是要自己手动加载文档模板对应的菜单,修改之后更新 menu bar

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 Rob Pan 2011年12月28日 6:36
    2011年12月22日 16:16
    版主
  • 是的,因为是采用BCG的那一套,和之前不一样了,不过您可以将CMFCMenuBar相关的代码给注释掉,然后使用您上面的代码也是可以的。
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 Rob Pan 2011年12月28日 6:36
    2011年12月23日 1:52
    版主

全部回复

  • 用默认的选项创建应用的话,GetMenu()应该返回null,因为换了BCG的menu bar。要替换掉menu bar的菜单的话,记得是要自己手动加载文档模板对应的菜单,修改之后更新 menu bar

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 Rob Pan 2011年12月28日 6:36
    2011年12月22日 16:16
    版主
  • 是的,因为是采用BCG的那一套,和之前不一样了,不过您可以将CMFCMenuBar相关的代码给注释掉,然后使用您上面的代码也是可以的。
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 Rob Pan 2011年12月28日 6:36
    2011年12月23日 1:52
    版主