1

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

我检测到这条线:

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() 不兼容。

我没主意了。谁能帮我解释一下这个问题?

最好的问候,安东。

4

1 回答 1

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 秒的加载时间)。

谢谢你们。

最好的问候,安东。

于 2013-07-01T14:27:17.260 回答