Прозрачность окна WPF при размещении компонента Flash ActiveX - PullRequest
3 голосов
/ 23 ноября 2010

Мое приложение имеет собственный дизайн окна, что означает, что для каждого окна установлены следующие параметры (XAML): WindowStyle = "None" AllowsTransparency = "False"

В одном из вспомогательных окон необходимо отобразитьКомпонент Flash, компонент Flash ActiveX размещается через XAML:

Что касается окна прозрачность , существует известная проблема с WPF и размещенными компонентами winforms, она просто не работает изкоробка.Чтобы иметь возможность просматривать компонент Flash, для параметра AllowsTransparency должно быть установлено значение «False», в противном случае компонент Flash просто не будет отображаться.

Для поддержания прозрачности окна (и общего L & F) у меня естьизменил этот кусок кода: http://blogs.msdn.com/b/adam_nathan/archive/2006/05/04/589686.aspx

        IntPtr hwnd = new WindowInteropHelper(window).Handle;

        // Set the background to transparent from both the WPF and Win32 perspectives
        window.Background = Brushes.Transparent;
        HwndSource.FromHwnd(hwnd).CompositionTarget.BackgroundColor = Colors.Transparent;

        MARGINS margins = new MARGINS(margin);
        DwmExtendFrameIntoClientArea(hwnd, ref margins);

Так что теперь все работает отлично, пока я не начал проверять его на XP .Очевидно, что приведенный выше фрагмент кода не работает на XP, так как используемая DLL (dwmapi.dll) - это DLL-библиотека Vista.

Вопрос в том, можно ли достичь того же результата в XP, и если да, то как?

Я пытался изменить этот фрагмент кода: Как создать полупрозрачное окно в WPF, которое позволяет событиям мыши проходить через или аналогичные другие примеры, но мне не удалосьдля достижения прозрачности любого окна.

Буду признателен за любой совет.

1 Ответ

1 голос
/ 16 июня 2011

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

...