注意:剛剛試了下,似乎沒法響應(yīng)。改日再行研究。或高手們還請不吝賜教。
ClientToScreen(&point);
theApp.GetContextMenuManager()->ShowPopupMenu(IDR_MENU_OBJECTMGR, point.x, point.y, this, TRUE);
說明一點:
1) 如果有用dockpane的話,則菜單控制需要在wm_rbuttondown中處理
2) 用上面的方法,彈出來的右鍵菜單,將是灰的,而且就算你已經(jīng)為它們寫了消息響應(yīng)。它們也是灰的。(但請注意:此時的菜單項,雖是
灰的,可它們是可以點擊的。即:它們是可以響應(yīng)的。)
要想解決菜單項灰的問題。可以用如下方法解決。
步驟一:
CMenu rMenu;
rMenu.LoadMenu(IDR_MENU_OBJECTMGR);
CMenu* pPopupMenu = rMenu.GetSubMenu(0);
ClientToScreen(&point);
pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTALIGN, point.x, point.y, this);
上面的代碼其實是我們非常熟悉的處理方法。但用上它,vs2008中的皮膚效果將無法顯示出來。
所以需要下面的步驟二。
步驟二:
不用上面的 pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTALIGN, point.x, point.y, this);
將其改為:GetContextMenuManager()->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTALIGN, point.x, point.y, this);
此時就萬事OK了。
-----------------------------------------------
總結(jié):vs2008在皮膚以及一些新的功能特性方面,的確給我們帶來了不少的驚奇。可同時,也給我們帶來了不少的"麻煩"。