MFC: задержка при использовании GetContextMenuManager () -> ShowPopup с визуальными элементами Office2007

У меня проблема при попытке показать контекстное меню (ресурс) по щелчку правой кнопкой мыши на systray.

Я обнаружил, что эта строка:

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

Решение

Я получил ответ от форумов 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 секунду загрузки, прежде чем показывать главное окно).

Спасибо вам всем.

С наилучшими пожеланиями,
Антон.

0

Другие решения

Других решений пока нет …