class_brick 2015-05-23 12:43 采纳率: 100%
浏览 1424
已采纳

新手学习vs2010运行mfc的问题

代码如下,我在视类加入如下代码,想实现输入字符后敲击回车在菜单栏生成一个动态菜单,但是敲下回车的时候程序就崩溃了,求助
void CMy321555555555555555555View::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(0x0d==nChar)
{
if(0==++m_nIndex)
{
m_menu.CreatePopupMenu();
GetParent()->GetMenu()->AppendMenuA(MF_POPUP,(UINT)m_menu.m_hMenu,"PhoneBook");
DrawMenuBar();
}
}
CView::OnChar(nChar, nRepCnt, nFlags);
}

  • 写回答

3条回答 默认 最新

  • zzkjliu 2015-05-23 14:56
    关注

    MFC动态菜单全攻略
    // 假设在ChildFrm中,调用该方法获得当前的主菜单指针
    CMenu* mainMenu = AfxGetMainWnd()->GetMenu();
    CMenu* subMenu = NULL;

    // 遍历主菜单下的各级菜单寻找名为MainSubMenu1的菜单
    int menuCount = mainMenu->GetMenuItemCount();
    
    for(int i = 0; i < menuCount; i++)
    {
        CString menuName;
        if(mainMenu->GetMenuStringA(i, menuName, MF_BYPOSITION)
            && menuName == "&MainSubMenu1")
        {
            drawingMenu = mainMenu->GetSubMenu(i);
            break;
        }
    }
    
    // 移除原有的菜单项
    int subMenu1Count = subMenu->GetMenuItemCount();
    for(int i = subMenu1Count - 1; i >= 0; i--)
    {
        subMenu->DeleteMenu(i, MF_BYPOSITION);
    }
    
    // 动态添加Item菜单项
    for(int i = 0; i < 2; i++)
    {
    
        CString message = "";
    
        subMenu->AppendMenuA(MF_STRING, ID_BEGIN + i, message.Format("SubSubMenu%i", i);
    
    }
    
    // 添加分隔符
    
    subMenu->AppendMenuA(MF_SEPARATOR);
    
    // 添加弹出式子菜单
    
    CMenu * popupMenu = new CMenu();
    popupMenu->CreateMenu();
    for(int i = 0; i < 2; i++)
    {
    
        CString message = "";
    
        popupMenu->AppendMenuA(MF_STRING, ID_BEGIN + 2 + i, message.Format("PopupSubMenu%i", i));
    
    }
    subMenu->AppendMenuA(MF_POPUP, (UINT_PTR)popupMenu->operator HMENU(), "PopupMenu");
    
    
    
        http://www.cnblogs.com/duguguiyu/archive/2007/07/21/826816.html
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?