我看孙鑫教程中动态添加菜单例子,
在VC.NET2009中,添加创建菜单的代码后,老是出现:
Test.exe 中的 0x78be207c (mfc90ud.dll) 处未处理的异常: 0xC0000005: 读取位置 0x00000004 时发生访问冲突;
代码如下:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWndEx::OnCr
。。。。。。。。。。。。。。。。。。。
lstBasicCommands.AddTail(ID_VIEW_TOOLBAR);
CMFCToolBar::SetBasicCommands(lstBasicCommands);
CMenu menu;
menu.CreateMenu();
GetMenu()->InsertMenuW(2,MF_POPUP|MF_BYPOSITION,(UINT)menu.m_hMenu,L"Test");
menu.AppendMenuW(MF_STRING,111,L"Hello");
menu.AppendMenuW(MF_STRING,112,L"Bye");
menu.AppendMenuW(MF_STRING,113,L"Mybole");
menu.Detach();
return 0;
}}
------解决方法--------------------------------------------------------
CMenu menu;
是 函数 内部局部变量
超出定义域后会自动调用析构函数
~CMenu(){
DestroyMenu();
}