Adobe Air со стилем окна WS_EX_LAYERED - PullRequest
1 голос
/ 24 апреля 2019

Я пытаюсь установить расширенный стиль окна WS_EX_LAYERED для внешнего приложения Adobe Air. См. Этот вопрос , если вы хотите знать, почему.Проблема, с которой я сталкиваюсь, заключается в том, что как только я устанавливаю стиль, окно перестает отображаться.Вот мой код:

auto style = GetWindowLong(hwnd, GWL_EXSTYLE);
SetWindowLong(hwnd, GWL_EXSTYLE, style | WS_EX_LAYERED);
// If I skip the next line, the window is suddenly white.
// With the next line, the image in the window freezes.
SetLayeredWindowAttributes(hwnd, 0, 255, LWA_ALPHA);

Окно продолжает работать отлично (щелчки и т. Д.), Оно просто больше не перерисовывается (например, при изменении размера).Окно не имеет стиль CS_OWNDC или CS_CLASSDC.

Может кто-нибудь сказать мне, в чем причина?

1 Ответ

1 голос
/ 30 апреля 2019

Какой режим рендеринга установлен в файле дескриптора приложения?Я полагаю, что ваш подход не сработает, если вы не настроите его для рендеринга через ЦП, т. Е. Чтобы AIR использовал функции GDI для отображения содержимого.Я думаю, что по умолчанию, скорее всего, используется ускорение GPU, поэтому установка стиля через SetWindowLong может помешать этому ..

В случае, если вы не уверены, как изменить режим рендеринга:

  • Найдите установленную папку приложения (в разделе «Program Files (x86)»)
  • Войдите в подпапку «META-INF \ AIR»
  • Отредактируйте файл «application.xml»
  • Найдите "renderMode" в разделе "initialWindow" (или, если его там нет, добавьте его ..) и установите для него значение "cpu"
  • Сохраните это и затем перезапустите приложение AIR

См. Файл дескриптора AIR Информация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...