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