MFC Feature Pack Ошибка? Графический интерфейс на основе ленты не восстанавливается после спящего режима (спящий режим)

Я вынужден с возможным ошибка особенность MFC Feature Pack под Windows Vista. Это может быть легко воссоздано:

  1. Создайте новое приложение SDI с помощью MFC Feature Pack (с интерфейсом на основе ленты). Вы также можете добавить несколько плавающих панелей, если хотите;
  2. Ничего не меняйте, просто постройте релиз;
  3. Закройте Visual Studio, запустите приложение и переключите компьютер в спящий режим (режим гибернации).
  4. Восстановите компьютер из спящего режима, и вы увидите, что приложение не восстановилось должным образом: оно неправильно отображает заголовок окна; невозможно увеличить размер окна (оно режет рамку) и т. д.

Кто-нибудь заставлял с таким поведением?

Я использую 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 форум.

Другие вопросы по тегам