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 可透過 Handle 屬性存取 Win32 視窗控制碼 (HWND) ,而這個屬性可以透過 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 屬性的值變更時。 |