返回一个CMenu对象指针,你最好使用前检查一下返回值,然后再使用 -> *** 作。
从你描述来看,可能在OnCreate时应该尚未创建菜单,所以返回的是个NULL
要在主菜单中添加d出菜单,可以在资源编辑器的菜单中直接编辑,不需要代码的。
try this code:BOOL CMainFrame::OnShowPopupMenu(CMFCPopupMenu* pMenuPopup)
{
if(pMenuPopup)
{
int iIndex = -1
CMFCPopupMenuBar* pMenuBar = pMenuPopup->GetMenuBar()
if (!CMFCToolBar::IsCustomizeMode()&&(NULL != pMenuBar) &&(iIndex=pMenuBar->CommandToIndex(ID_EDIT_PASTE))>=0)
{
pMenuPopup->InsertSeparator(iIndex+1)
pMenuPopup->InsertItem(CMFCToolBarMenuButton(IDS_EDIT_MYITEM_1,NULL,-1,_T("&MyItem 1")),iIndex+2)
pMenuPopup->InsertItem(CMFCToolBarMenuButton(IDS_EDIT_MYITEM_1 + 1,NULL,-1,_T("&MyItem 2")),iIndex+3)
}
}
return TRUE
}
首先你要确定GetMenu()函数是否返回了正确的菜单指针,很有可能这个是野指针或者空指针,导致后面调用出错;注释后需要确定重新编译了再运行,如果还出现一样的结果,只能证明是下面的代码 有问题,或者是你模仿的有问题,或者是他原来的代码有问题,计算机是不会骗人的。
这个需要你添加断点跟踪看才能准确的分析和定位问题,也是一种基本的能力
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)