HwndSource 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在 Win32 視窗中顯示 Windows Presentation Foundation (WPF) 內容。
public ref class HwndSource : System::Windows::PresentationSource, IDisposable, System::Windows::Interop::IKeyboardInputSink, System::Windows::Interop::IWin32Window
public class HwndSource : System.Windows.PresentationSource, IDisposable, System.Windows.Interop.IKeyboardInputSink, System.Windows.Interop.IWin32Window
type HwndSource = class
inherit PresentationSource
interface IDisposable
interface IWin32Window
interface IKeyboardInputSink
type HwndSource = class
inherit PresentationSource
interface IDisposable
interface IKeyboardInputSink
interface IWin32Window
Public Class HwndSource
Inherits PresentationSource
Implements IDisposable, IKeyboardInputSink, IWin32Window
- 繼承
- 實作
備註
重要
此類別的許多成員都無法在網際網路安全性區域中使用。
會 HwndSource 實作可包含 WPF 內容的 Win32 視窗。 視窗中的 WPF 內容會排列、測量及轉譯;和 是輸入的互動式。 HwndSource因為 特別設計來與 Win32 交互操作,所以這個類別會公開數個低階 Win32 功能。 您可以使用這個類別來執行下列動作:
指定視窗樣式、視窗類別樣式和延伸視窗樣式。
攔截視窗程式。
提供視窗控制碼的存取權, (HWND) 。
終結視窗。
類別 HwndSource 是針對一般互通性所設計,並非設計為 Managed HWND 包裝函式。 一般而言,它不會提供 Managed 方法來操作視窗或屬性來檢查其狀態。 相反地,類別 HwndSource 會透過 屬性存取 Win32 視窗控制碼 (HWND) Handle ,其可透過 PInvoke 技術傳遞至 WIN32 API 以操作視窗。
營造
的許多層面 HwndSource 只能在建構時間指定。 若要建立 HwndSource ,請先建立 HwndSourceParameters 結構,並填入所需的參數。 這些參數包括下列各項:
類別、視窗和延伸視窗樣式。 您必須使用 PInvoke 在建立視窗之後變更樣式。 建立視窗之後,並非所有樣式都可以變更。 在變更視窗樣式之前,請先參閱 Win32 檔。
視窗的初始位置。
視窗的初始大小,包括指定大小,還是應該從 WPF 內容決定的大小。
父視窗。
要 HwndSourceHook 包含在視窗程式鏈結中的 。 如果您在建構時間指定勾點,則會接收視窗的所有訊息。 您可以在建立視窗之後,使用 AddHook 來新增勾點。
透明度設定。 最上層視窗可以設定為根據 WPF 內容的每個圖元透明度,與桌面上的其他視窗混合。 若要啟用此功能,請將 UsesPerPixelOpacity 中的 HwndSourceParameters 屬性設定為
true
。 這個屬性只能在建構時間指定,而且只能透過 HwndSource(HwndSourceParameters) 建構函式簽章來指定,而且會產生數個限制。
填入 HwndSourceParameters 結構之後,請將它傳遞至 HwndSource(HwndSourceParameters) 的 HwndSource 建構函式。
物件存留期
HwndSource是一般 Common Language Runtime (CLR) 物件,而且其存留期是由垃圾收集行程管理。 HwndSource因為 表示 Unmanaged 資源,所以 HwndSource 會實作 IDisposable 。 從擁有者執行緒呼叫時,同步呼叫 Dispose 會立即終結 Win32 視窗。 如果從另一個執行緒呼叫,則會以非同步方式終結 Win32 視窗。 某些互通案例可能需要從交互操作程式碼明確呼叫 Dispose 。
視窗程式
類別 HwndSource 會實作自己的視窗程式。 此視窗程式可用來處理重要的視窗訊息,例如與版面配置、轉譯和輸入相關的訊息。 不過,您也可以連結視窗程式以供自己使用。 您可以在建構期間藉由設定 HwndSourceParameters.HwndSourceHook 屬性來指定自己的勾點,也可以在建立視窗之後使用 AddHook 和 RemoveHook 來新增和移除勾點。 勾點會依最後一次出出的順序呼叫,這可讓您的勾點在內建處理之前執行。 實際的勾點是由弱式參考所持有。 因此,請確定您管理勾點委派的存留期。
如需和其他互通類別的詳細資訊 HwndSource ,請參閱 WPF 和 Win32 互通性。
請注意 的建構函 HwndSource 式如何採用類似 Win32 函式參數的參數,例如 CreateWindowEx。
調整轉換不應套用至 RootVisual 的 HwndSource 。 請參閱 的 RootVisual 。
建構函式
HwndSource(HwndSourceParameters) |
使用包含初始設定值的結構,初始化 HwndSource 類別的新執行個體。 |
HwndSource(Int32, Int32, Int32, Int32, Int32, Int32, Int32, String, IntPtr) |
使用指定的類別樣式、樣式、延伸樣式、x-y 位置、寬度、高度、名稱和父視窗,初始化 HwndSource 類別的新執行個體。 |
HwndSource(Int32, Int32, Int32, Int32, Int32, Int32, Int32, String, IntPtr, Boolean) |
使用指定的類別樣式、樣式、延伸樣式、x-y 位置、寬度、高度、名稱和父視窗,以及指定視窗是否自動調整大小,初始化 HwndSource 類別的新執行個體。 |
HwndSource(Int32, Int32, Int32, Int32, Int32, String, IntPtr) |
使用指定的類別樣式、樣式、延伸樣式、x-y 位置、名稱和父視窗,初始化 HwndSource 類別的新執行個體。 |
屬性
AcquireHwndFocusInMenuMode |
取得值,這個值決定是否針對此 HwndSource,為包含 WPF 的視窗取得 Win32 焦點。 |
ChildKeyboardInputSinks |
取得註冊的輸入接收器序列。 |
CompositionTarget |
取得所裝載之視窗的視覺管理員。 |
DefaultAcquireHwndFocusInMenuMode |
取得或設定 AcquireHwndFocusInMenuMode 之新執行個體的 HwndSource 預設值。 |
Dispatcher |
取得與這個 Dispatcher 關聯的 DispatcherObject。 (繼承來源 DispatcherObject) |
Handle |
取得這個 HwndSource 的視窗控制代碼。 |
IsDisposed |
取得值,指出是否已針對這個 Dispose() 呼叫 HwndSource。 |
KeyboardInputSiteCore |
取得或設定對元件容器之 IKeyboardInputSite 介面的參考。 |
RestoreFocusMode |
取得視窗的 RestoreFocusMode。 |
RootVisual |
取得或設定視窗的 RootVisual。 |
SizeToContent |
取得或設定視窗是否以及如何調整至其內容大小。 |
UsesPerPixelOpacity |
取得值,這個值會宣告是否遵守來源視窗內容之每像素的不透明度。 |
方法
事件
AutoResized |
當進行配置而需要 HwndSource 自動調整大小時發生。 |
ContentRendered |
內容已呈現且可以進行使用者互動時發生。 (繼承來源 PresentationSource) |
Disposed |
在這個物件上呼叫 Dispose() 方法時發生。 |
DpiChanged |
發生於此 Hwnd 的螢幕 DPI 已變更時,或是將 Hwnd 移至不同 DPI 的螢幕時。 |
SizeToContentChanged |
發生於 SizeToContent 屬性的值變更時。 |