1 回答

TA貢獻1725條經驗 獲得超8個贊
這里不需要用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);
很明顯你這里不需要!
添加回答
舉報