簡體   English   中英

在WPF應用程序中托管win32窗口?

[英]Hosting win32 windows in a WPF app?

我有一個遺留的c ++ win32應用程序,並使用wpf windows擴展它確實有效。

但我想要做的是將WPF窗口作為主窗口,而不僅僅是任何舊窗口而是棱鏡外殼窗口。

所以對於我的遺留c ++項目,我想添加一個Bootstrapper,shell窗口,MEF加載器,所有的鈴聲和​​口哨聲。 在那里,我想放置一些命令,在需要時打開傳統的win32窗口。

現在在win32應用程序中打開WPF窗口很簡單,我只需要使用

System::Windows::Forms::Integration::ElementHost::EnableModelessKeyboardInterop(mywindow);

但是如何在WPF應用程序中打開win32窗口? win32窗口需要一個消息泵循環,但我在哪里放這個:

MSG  msg;
while (GetMessage(&msg, NULL, NULL, NULL))
{
  TranslateMessage(&msg);
  DispatchMessage(&msg);
}

我可以為循環創建任何新線程嗎? 或者是否也有這樣的互操作助手?

或者我的想法是瘋了嗎?

你見過這個嗎? :WPF如何使用HWND

我還建議閱讀: 演練:在WPF中托管Win32控件

正如您將看到的那樣,有一個包含控件的主機窗口。 主機窗口還可以包含自繪內容或任何您想要的內容。

你必須從HwndHost覆蓋WndProc。 也許可以從那里轉發到您的本地處理程序。 還沒有那樣做。

正如@Tergiver指出的那樣,不需要消息泵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM