我正在尝试在我的应用程序中使用 TrackPopupMenu 函数创建上下文菜单,我在其中使用的代码如下所示:
CMenu menu;
if (menu.LoadMenu(IDR_MENU_TRAY))
{
CMenu* pSubMenu = menu.GetSubMenu(0);
if (pSubMenu != NULL)
{
pSubMenu->ModifyMenu(IDM_CLOSE,MF_BYCOMMAND,IDM_CLOSE ,g_cfg->GetLang(TEXT_MAIN_CLOSE,"Exit(&X)"));
pSubMenu->ModifyMenu(IDM_SHOW,MF_BYCOMMAND,IDM_SHOW ,g_cfg->GetLang(TEXT_MAIN_OPEN_SHUTTER,"Open(&O)"));
CPoint point;
GetCursorPos(&point);
SetForegroundWindow();
pSubMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x, point.y, messageOnlyWnd);
}
}
该代码在 WinXP 上运行完美,而在 win7 和 vista 上却没有。win7和vista的问题是弹出菜单需要相当长的时间,可能1分钟或更长时间。但是如果我在win7或vista上关闭Aero,它就像在winXP上一样运行流畅,所以我猜代码中一定与Aero冲突,但我不知道如何修复它。有没有人可以帮助我?如果有人帮助我,我将不胜感激。