托管Flash ActiveX组件时的WPF窗口透明度
我的应用程序有一个自定义窗口设计,这意味着每个窗口都有以下参数集(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)是一个Vista DLL。
问题是在XP中是否可以实现相同的结果,如果是,如何实现?
我试着改变这段代码:如何在WPF中创建一个允许鼠标事件通过或其他类似示例的半透明窗口,但是,我没有设法实现任何窗口透明度。
希望得到任何建议。
我相信不可能做我想做的事......我最终在XP上创建了方形窗口,以避免与透明度相关的视觉问题。
链接地址: http://www.djcxy.com/p/25903.html上一篇: WPF Window transparency while hosting a Flash ActiveX component
下一篇: How to remove the non client area of a WPF window without using AllowTransparency