WinformHost面板内的WPF窗口

时间:2016-10-07 13:33:19

标签: c# .net wpf winforms-interop

我正在使用winform主机在另一个WPF应用程序中显示一个WPF exe窗口。

我在主应用程序中创建了一个面板,并将其设置为winformhost的子节点。

  mHostingPanel = new System.Windows.Forms.Panel()
            {
                BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
            };                


            mWinformHost = new WindowsFormsHost();
            mWinformHost.Child = mHostingPanel;

然后我启动另一个窗口进程并将托管面板设置为父级。

  WindowsAPI.SetParent(mProcess.MainWindowHandle, mHostingPanel.Handle);

我的问题是,如果我启动应用程序,谁将呈现我的Child WPF窗口,其父级是winform面板。它是Panel的Direct-X还是GDI上下文?

此外,如果我在子WPF应用程序上设置Allowtransparency = True,则UI不会显示在主机面板中。

1 个答案:

答案 0 :(得分:0)

找到原因。它被称为空域问题(当win32和WPF试图共享像素时)我不认为它可以通过任何框架API解决,因为微软否认它。 https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2644120-bring-back-the-hwndhost-isredirected-and-compositi

Mitigating AirSpace issues