Как создать окно (CreateWindowEx), которое поддерживает прозрачность и размещается в окне WPF?C#

Место общения программистов C#
Ответить
Гость
 Как создать окно (CreateWindowEx), которое поддерживает прозрачность и размещается в окне WPF?

Сообщение Гость »


Я пытаюсь создать окно, поддерживающее прозрачность, и поместить его в окно WPF в .net4.5

Я решил использовать: HwndHost, поэтому расширяю класс HwndHost и переопределяю в нем метод BuildWindowCore:

защищенное переопределение HandleRef BuildWindowCore(HandleRef hwndParent) { _winHand = CreateWindowEx(WS_EX_LAYERED, "static", string.Empty, WS_POPUP | WS_VISIBLE, 0, 0, _width, _height, hwndParent.Handle, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); // устанавливаем поддержку прозрачности SetLayeredWindowAttributes (_windowHandle, 100, 0, 2); вернуть новый HandleRef(this, _winHand); } Но в конце будет выдано исключение: Размещенный HWND должен быть дочерним окном указанного родителя.

Теперь я в тупике. Если мне нужно окно прозрачности, оно должно быть в стиле WS_POPUP, но если я хочу поместить окно в wpf с помощью HwndHost > это должен быть WS_Child

Можно ли как-нибудь это сделать?

Причина: Окно должно быть окном прозрачности, потому что мне нужно использовать SDL2 для рендеринга некоторого изображения rgba, которое включает альфа-канал. но если я не установил, окно не сможет отображать альфа-канал как прозрачный.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»