注意:刚刚试了下,似乎没法响应。改日再行研究。或高手们还请不吝赐教。
ClientToScreen(&point);
theApp.GetContextMenuManager()->ShowPopupMenu(IDR_MENU_OBJECTMGR, point.x, point.y, this, TRUE);
说明一点:
1) 如果有用dockpane的话,则菜单控制需要在wm_rbuttondown中处理
2) 用上面的方法,弹出来的右键菜单,将是灰的,而且就算你已经为它们写了消息响应。它们也是灰的。(但请注意:此时的菜单项,虽是
灰的,可它们是可以点击的。即:它们是可以响应的。)
要想解决菜单项灰的问题。可以用如下方法解决。
步骤一:
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了。
-----------------------------------------------
总结:vs2008在皮肤以及一些新的功能特性方面,的确给我们带来了不少的惊奇。可同时,也给我们带来了不少的"麻烦"。