2010-11-23 21 views
3

私のアプリケーションは、すべてのウィンドウには、次のパラメータ設定(XAML)を有することを意味カスタムウィンドウのデザインを、持っていますサブウインドウの一つには、Flash ActiveXコンポーネントは、XAML thrughホストされている、Flashコンポーネントを表示する必要がある: WPFウィンドウの透明度ながら

ウィンドウ透明に関しては、それだけで、そこWPFの既知の問題であり、WinFormsのコンポーネントを開催しましたdoes not w箱から出てきてください。 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でそれをチェックし始めるまで。明らかに、使用されているDLL(dwmapi.dll)がVista DLLであるため、上記のコードはXPでは動作しません。

質問は同じ結果がXPで達成できるかどうか、もしそうなら、どのようにですか?

私はこのコードを変更しようとしました:How to create a semi transparent window in WPF that allows mouse events to pass throughまたは他の同様の例ですが、私はどのようなウィンドウ透過性も達成できませんでした。

アドバイスありがとうございます。

+0

私は同じことを探していましたが、Flashが目に見えるようにWPFで透明性を探していたことを除いて、適切な回答は見つかりませんでしたが、あなたに感謝します。 WPFを透明にし、FLASHファイルを正しく表示させることができました。 –

答えて

1

私はしたいことをすることができないと信じています...透明性に関連する視覚的な問題を避けるためにXP上に四角いウィンドウを作成しました。

関連する問題