2010-11-23 49 views
3

我的應用程序有一個自定義窗口設計,這意味着每個窗口有以下參數設置(XAML): WindowStyle =「無」 AllowsTransparency =「假」WPF窗口透明度,同時舉辦的Flash ActiveX組件

只是

至於窗口透明度,有一個已知的問題與WPF和託管的WinForms組成部分,它:一個子窗口的顯示需要Flash組件時,Flash ActiveX組件託管thrugh XAML不w ork開箱即用。爲了能夠查看Flash組件,AllowsTransparency必須設置爲「False」,否則,flash組件將不會被顯示。

要保持窗口的透明度(和一般的大號& 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中是否可以實現相同的結果,如果是,如何實現?

我試過改變這段代碼:How to create a semi transparent window in WPF that allows mouse events to pass through或類似的其他例子,但我沒有設法實現任何窗口透明度。

將不勝感激任何意見。

+0

我一直在尋找相同的東西,除了我正在尋找WPF中的透明度,以便Flash可見並且沒有找到任何正確的答案,但是感謝你,你已經發布了一個非常詳細的問題和一個鏈接 - 最終我能夠使WPF變得透明並且FLASH文件能夠正確顯示! – 2014-03-16 08:44:01

回答

1

我相信不可能做我想做的事......我最終在XP上創建了方形窗口,以避免與透明度相關的視覺問題。