Мое приложение имеет собственный дизайн окна, что означает, что для каждого окна установлены следующие параметры (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, которое позволяет событиям мыши проходить через или аналогичные другие примеры, но мне не удалосьдля достижения прозрачности любого окна.
Буду признателен за любой совет.