2016-10-07 6 views
1

Я показываю окно exe WPF внутри другого приложения WPF, используя winform host.Окно WPF внутри панели WinformHost

Я создал панель в основном приложении и установил ее как дочерний элемент 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.Will это будет Direct-X или GDI контекст панели?

Также, если я устанавливаю Allowtransparency = True в дочернем WPF-приложении, пользовательский интерфейс не отображается в панели хостинга.

+0

Это зло, и не обязательно в плохом смысле! – tolanj

+0

Я не думаю, что получение права собственности на окно повлияет на рендеринг wpf. Я бы посмотрел на это: https://blogs.msdn.microsoft.com/oldnewthing/20130412-00/?p=4683/ – tolanj

+0

@tolanj: Если вы читаете эту запись в блоге, вы не можете прийти к выводу, что это не обязательно были злом. Очень, очень плохо. Это другое приложение, безусловно, не готово к повторному воспроизведению. Если бы это было так, это был бы элемент управления ActiveX. – IInspectable

ответ

0

Нашел причину. Он назвал проблему воздушного пространства (когда win32 и WPF пытались обмениваться пикселями), и я не думаю, что это может быть разрешено любым API-интерфейсом инфраструктуры, поскольку Microsoft отказала ему. https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2644120-bring-back-the-hwndhost-isredirected-and-compositi

Mitigating AirSpace issues