MFC Feature Pack Ошибка? Графический интерфейс на основе ленты не восстанавливается после спящего режима (спящий режим)
Я вынужден с возможным ошибка особенность MFC Feature Pack под Windows Vista. Это может быть легко воссоздано:
- Создайте новое приложение SDI с помощью MFC Feature Pack (с интерфейсом на основе ленты). Вы также можете добавить несколько плавающих панелей, если хотите;
- Ничего не меняйте, просто постройте релиз;
- Закройте Visual Studio, запустите приложение и переключите компьютер в спящий режим (режим гибернации).
- Восстановите компьютер из спящего режима, и вы увидите, что приложение не восстановилось должным образом: оно неправильно отображает заголовок окна; невозможно увеличить размер окна (оно режет рамку) и т. д.
Кто-нибудь заставлял с таким поведением?
Я использую Windows Vista Business SP2 и получаю такое же поведение на своем компьютере и ноутбуке. К сожалению, не проверялось под XP или другой платформой.
PS: я решил упомянутую проблему для приложения, основанного на панели инструментов, переключив визуальный стиль на любой другой и снова получив WM_POWERBROADCAST. Но трюк не работает для приложений на основе ленты.
1 ответ
У меня была та же проблема, спасибо за подсказку, и, ища ее, я нашел решение, я только попробовал это в приложении с панелью инструментов, я не пробовал это в Ленте, если это работает в ленте, подтвердите меня, пожалуйста.
Что работает для меня:
// add to class CMainFrame :
UINT CMainFrame::OnPowerBroadcast(UINT nPowerEvent, UINT nEventData)
{
// Comment "default return" and return true
//return CMDIFrameWndEx::OnPowerBroadcast(nPowerEvent, nEventData);
return true;
}
Источник: MSDN форум.