MFC:使用GetContextMenuManager() - > ShowPopup与Office2007视觉效果时延迟

时间:2013-06-17 10:39:50

标签: c++ mfc contextmenu

尝试在系统托盘上右键单击显示上下文菜单(资源)时遇到问题。

我发现了这一行:

CMenu menu;
menu.LoadMenu(IDR_MENU1);
HMENU hMenu2 = menu.GetSubMenu(0)->Detach();
--> m_pTrayMenu = theApp.GetContextMenuManager()->ShowPopupMenu(hMenu2, point.x-5, point.y, this, TRUE);

将程序暂停约1.5秒。编辑:但只是第一次运行此代码。

然而,如果我有这条线,它只会停止:

CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));

如果我将其更改为Office2003,它可以正常工作(虽然它没有得到我想要的漂亮视觉效果)

我试过在MSDN和不同论坛上查看,但它没有说明与Office2007不兼容的ShowPopupMenu()。

我没有想法。任何人都可以帮我解释一下这个问题吗?

祝你好运, 安东。

1 个答案:

答案 0 :(得分:0)

我收到了MSDN论坛的回复:

(被带到开发者之后,这是我得到的回应):

  

根据开发者的说法,这种行为是设计的。延迟主要是   因为要进行一些XML解析来加载办公室颜色。该   颜色详细信息存储在XML资源文件中。

可在此处找到该主题: http://social.msdn.microsoft.com/Forums/vstudio/en-US/32d796a3-7b42-431e-9e1e-f58fb0dee0be/cmfcpopupmenu-and-cmfcvisualmanageroffice2007-not-a-good-match

感谢大家的回复和帮助。

我目前的解决方案是:

CMFCPopupMenu *c = new CMFCPopupMenu;
delete c;

直接在程序开始时(因此在显示主窗口之前有~1秒的负载)。

谢谢大家。

祝你好运, 安东。