天天看點

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 時發生通路沖突

花了一個多小時,就搞定這麼小的知識點。

分享給後來者吧

繼續閱讀