Как отключить DwmExtendFrameIntoClientArea?

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

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

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


person Jake Petroules    schedule 09.12.2012    source источник


Ответы (1)


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

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

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