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 时发生访问冲突_第1张图片
发现是自己创建的菜单中没有子项

所以添加子项就可以了

vs2013右键菜单 0xC0000005: 读取位置 0x00000004 时发生访问冲突_第2张图片

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

vs2013右键菜单 0xC0000005: 读取位置 0x00000004 时发生访问冲突_第3张图片

这样就可以了

vs2013右键菜单 0xC0000005: 读取位置 0x00000004 时发生访问冲突_第4张图片

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

分享给后来者吧

你可能感兴趣的:(编程学习)