代码如下,我在视类加入如下代码,想实现输入字符后敲击回车在菜单栏生成一个动态菜单,但是敲下回车的时候程序就崩溃了,求助
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);
}
新手学习vs2010运行mfc的问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 宇视监控服务器无法登录
- ¥15 PADS Logic 原理图
- ¥15 PADS Logic 图标
- ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
- ¥15 DruidDataSource一直closing
- ¥20 气象站点数据求取中~
- ¥15 如何获取APP内弹出的网址链接
- ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
- ¥50 STM32单片机传感器读取错误
- ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据