Как я могу отключить DwmExtendFrameIntoClientArea?

После того как я позвонил DwmExtendFrameIntoClientArea в окне, как я могу выключить его снова, оставаясь в режиме Aero?

Я попытался вызвать DwmExtendFrameIntoClientArea со всеми полями, установленными в 0, что, кажется, работает частично, за исключением того, что фон клиентской области моего окна весь черный и показывает артефакты перерисовки.

Я использую Qt, и я звоню setAttribute(Qt::WA_TranslucentBackground, false) на моем окне после этого, но это, кажется, не имеет никакого эффекта. Как получить правильную перерисовку клиентской области после сброса фрейма окна?

1 ответ

Решение

Простая ошибка - мне тоже нужно было установить Qt::WA_NoSystemBackground в false, чтобы Qt действительно рисовал окно...

Итак, процедура отключения расширенного кадра:

  • Вызов DwmExtendFrameIntoClientArea (вводит в заблуждение, верно?) Со всеми полями, установленными в 0
  • Установите WA_TranslucentBackground = false в окне (или не эквивалент Qt)
  • Установите WA_NoSystemBackground = false в окне (или не эквивалент Qt)
Другие вопросы по тегам