1. 程式人生 > WINDOWS開發 >WPF中獲取頂層窗體的控制代碼

WPF中獲取頂層窗體的控制代碼

原文:WPF中獲取頂層窗體的控制代碼

IntPtr ipWnd=new WindowInteropHelper(this).Handle;



WindowInteropHelper 類

協助 Windows Presentation Foundation (WPF) 與 Win32 程式碼之間的互操作。


此類的成員允許呼叫方享有對 Win32 HWND 和 WPF Window 的父 HWND 的內部訪問許可權。 屬性安全檢查是通過這些成員執行的。

當您需要基於其 HWND 的更具體的物件時,請使用此類。

示例方案假設您需要在 Win32 應用程式中承載 WPF 對話方塊。使用該對話方塊的 WPF 視窗物件初始化 WindowInteropHelper。 然後可以從 Handle 屬性獲取 WPF 視窗的控制代碼 (HWND),並使用 Owner 屬性指定 WPF 視窗的所有者。 下面的程式碼示例演示在 Win32 應用程式中承載 WPF 對話方塊時,如何使用 WindowInteropHelper


WindowInteropHelper wih = new WindowInteropHelper(myDialog);
wih.Owner = ownerHwnd;
myDialog.ShowDialog();

此類所支援的另一個方案是從 WPF Window 物件獲取 HwndSource 物件。

HwndSource 支援通過 AddHook 方法直接處理 Win32 訊息。

通過使用 HwndSourceAddHook 來替代 Window,您仍可以處理在 WPF 中沒有等效項或未處理的訊息。

使用 Window 源建立一個 WindowInteropHelper,然後對 WindowInteropHelper 呼叫 Handle 以從 HwndSource 的 HWND 中獲取。