孙鑫vc++6.0教程第六课1小时32分左右有个创建右键菜单的教程,照教程录入后会报错,如下
0x10164A91 (mfc120ud.dll) (Menu.exe 中)处的第一机会异常: 0xC0000005: 读取位置 0x00000004 时发生访问冲突。
0x10164A91 (mfc120ud.dll) (Menu.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x00000004 时发生访问冲突。
百度了一下之后,没找到解决方法,自己猜测试了一下,原来是子菜单没有。
原来的代码:
menu.LoadMenu(IDR_MENU1);
CMenu *pPopup;
pPopup=menu.GetSubMenu(0);
ClientToScreen(&point);
pPopup->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this);
这样会报错
然后改了一下代码:
menu.LoadMenu(IDR_MAINFRAME);
CMenu *pPopup;
pPopup=menu.GetSubMenu(0);
ClientToScreen(&point);
pPopup->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this);
发现是自己创建的菜单中没有子项
所以添加子项就可以了
注意弹出菜单的 属性设置:顶层菜单是没有ID的(COMMAND),只有索引(POSITION)
这样就可以了
花了一个多小时,就搞定这么小的知识点。
分享给后来者吧