1 回答

TA贡献1725条经验 获得超7个赞
这里不需要用Detach()
你这个主要产生的错误为:
GetMenu()->GetSubMenu(0)->TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
你这个是在视图里面用GetMenu(),因为视图里面是没有菜单的.菜单是属于
框架对象的.
所以可以改为:
GetParent()->GetMenu()->GetSubMenu(0)->TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
这样就会弹出<新建--打开--保存--打印>等菜单选项.
我估计这个不是你的原意:
你的原意应该是要弹出你加载的新菜单项,所以应该这样:
CMenu menu;
menu.LoadMenu(IDR_MENU1);
menu.GetSubMenu(0)->TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
这样就能弹出你加载的那个菜单项了.
至于Detach();意思是从这个菜单对象中把里面的菜单剥脱出去.
所以我们可以这样用:
CMenu menu;
menu.LoadMenu(IDR_MENU1);
menu.GetSubMenu(0)->TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
menu.Detach();
menu.LoadMenu(IDR_MENU1);
menu.GetSubMenu(1)->TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
很明显你这里不需要!
添加回答
举报