HwndSource 類別

定義

在 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 屬性來指定自己的勾點,或者也可以在建立視窗之後使用 AddHookRemoveHook 來新增和移除勾點。 勾點會依後進先出順序呼叫,可讓您的勾點在內建處理之前執行。 實際的勾點是由弱式參考所持有。 因此,請確定您管理攔截委派的存留期。

如需和其他交互操作類別的詳細資訊 HwndSource ,請參閱 WPF 和 Win32 交互操作

請注意 的建構 HwndSource 函式如何採用類似 Win32 函式參數的參數,例如 CreateWindowEx

調整轉換不應該套用至 RootVisualHwndSource 。 請參閱 的 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

取得值,這個值會宣告是否遵守來源視窗內容之每像素的不透明度。

方法

AddHook(HwndSourceHook)

加入接收所有視窗訊息的事件處理常式。

AddSource()

新增 PresentationSource 衍生類別執行個體至已知展示來源的清單。

(繼承來源 PresentationSource)
CheckAccess()

判斷呼叫的執行是否可以存取這個 DispatcherObject

(繼承來源 DispatcherObject)
ClearContentRenderedListeners()

ContentRendered 事件的接聽程式清單設定為 null

(繼承來源 PresentationSource)
CreateHandleRef()

取得 HwndSource 的視窗控制代碼。 視窗控制代碼會封裝為 HandleRef 結構的一部分。

Dispose()

釋放 HwndSource 所使用的所有 Managed 資源,並引發 Disposed 事件。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
FromHwnd(IntPtr)

傳回指定之視窗的 HwndSource 物件。

GetCompositionTargetCore()

取得視窗的視覺目標。

GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
HasFocusWithinCore()

取得值,這個值表示接收或其包含的其中一個元件是否有焦點。

MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
OnDpiChanged(HwndDpiChangedEventArgs)

於視窗的 DPI 將變更時呼叫。

OnMnemonicCore(MSG, ModifierKeys)

當叫用這個接收的其中一個助憶鍵 (便捷鍵 (Access Key)) 時呼叫。

RegisterKeyboardInputSinkCore(IKeyboardInputSink)

註冊所包含之元件的 IKeyboardInputSink 介面。

RemoveHook(HwndSourceHook)

移除由 AddHook(HwndSourceHook) 加入的事件處理常式。

RemoveSource()

PresentationSource 衍生類別執行個體從已知展示來源的清單中移除。

(繼承來源 PresentationSource)
RootChanged(Visual, Visual)

提供告知,指出根 Visual 已變更。

(繼承來源 PresentationSource)
TabIntoCore(TraversalRequest)

將焦點設定在接收的第一個定位停駐點 (Tab Stop) 或最後一個定位停駐點。

ToString()

傳回代表目前物件的字串。

(繼承來源 Object)
TranslateAcceleratorCore(MSG, ModifierKeys)

在按下按鍵時的訊息層級處理鍵盤輸入。

TranslateCharCore(MSG, ModifierKeys)

先處理 WM_CHAR、WM_SYSCHAR、WM_DEADCHAR 和 WM_SYSDEADCHAR 輸入訊息,接著呼叫 OnMnemonic(MSG, ModifierKeys) 方法。

VerifyAccess()

請強制執行可以存取這個 DispatcherObject 的呼叫執行緒。

(繼承來源 DispatcherObject)

事件

AutoResized

當進行配置而需要 HwndSource 自動調整大小時發生。

ContentRendered

內容已呈現且可以進行使用者互動時發生。

(繼承來源 PresentationSource)
Disposed

在這個物件上呼叫 Dispose() 方法時發生。

DpiChanged

發生於此 Hwnd 的螢幕 DPI 已變更時,或是將 Hwnd 移至不同 DPI 的螢幕時。

SizeToContentChanged

發生於 SizeToContent 屬性的值變更時。

明確介面實作

IKeyboardInputSink.HasFocusWithin()

如需這個成員的說明,請參閱 IList.Remove(Object)

IKeyboardInputSink.KeyboardInputSite

如需這個成員的說明,請參閱 KeyboardInputSite

IKeyboardInputSink.OnMnemonic(MSG, ModifierKeys)

如需這個成員的說明,請參閱 OnMnemonic(MSG, ModifierKeys)

IKeyboardInputSink.RegisterKeyboardInputSink(IKeyboardInputSink)

如需這個成員的說明,請參閱 RegisterKeyboardInputSink(IKeyboardInputSink)

IKeyboardInputSink.TabInto(TraversalRequest)

如需這個成員的說明,請參閱 TabInto(TraversalRequest)

IKeyboardInputSink.TranslateAccelerator(MSG, ModifierKeys)

如需這個成員的說明,請參閱 TranslateAccelerator(MSG, ModifierKeys)

IKeyboardInputSink.TranslateChar(MSG, ModifierKeys)

如需這個成員的說明,請參閱 TranslateChar(MSG, ModifierKeys)

適用於

另請參閱