У меня проблема при попытке показать контекстное меню (ресурс) по щелчку правой кнопкой мыши на 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 ().
У меня нет идей. Может ли кто-нибудь помочь мне пролить свет на этот вопрос?
С наилучшими пожеланиями,
Антон.
Я получил ответ от форумов 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 секунду загрузки, прежде чем показывать главное окно).
Спасибо вам всем.
С наилучшими пожеланиями,
Антон.
Других решений пока нет …