WinformHost面板中的WPF窗口

本文关键字:WPF 窗口 WinformHost | 更新日期: 2023-09-27 18:11:58

我在使用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);

我的问题是,如果我启动应用程序,谁将渲染我的孩子WPF窗口,其父是一个winform面板。它是Panel的Direct-X还是GDI上下文?

如果我设置Allowtransparency=True在子WPF应用程序,UI不显示在主机面板

WinformHost面板中的WPF窗口

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

缓解空域问题