天天看点

vs2013右键菜单 0xC0000005: 读取位置 0x00000004 时发生访问冲突



孙鑫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);
           
vs2013右键菜单 0xC0000005: 读取位置 0x00000004 时发生访问冲突

发现是自己创建的菜单中没有子项

所以添加子项就可以了

vs2013右键菜单 0xC0000005: 读取位置 0x00000004 时发生访问冲突

注意弹出菜单的 属性设置:顶层菜单是没有ID的(COMMAND),只有索引(POSITION)

vs2013右键菜单 0xC0000005: 读取位置 0x00000004 时发生访问冲突

这样就可以了

vs2013右键菜单 0xC0000005: 读取位置 0x00000004 时发生访问冲突

花了一个多小时,就搞定这么小的知识点。

分享给后来者吧

继续阅读