HwndSource Klasse

Definition

Stellt WPF-Inhalt in einem Win32-Fenster dar.

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
Vererbung
Implementiert

Hinweise

Wichtig

Viele Member dieser Klasse sind in der Internetsicherheitszone nicht verfügbar.

Ein HwndSource implementiert ein Win32-Fenster, das WPF-Inhalte enthalten kann. Der WPF-Inhalt im Fenster wird angeordnet, gemessen und gerendert. und ist interaktiv für die Eingabe. Da die speziell für die HwndSource Zusammenarbeit mit Win32 konzipiert ist, macht diese Klasse mehrere Win32-Features auf niedriger Ebene verfügbar. Sie können diese Klasse verwenden, um Folgendes zu tun:

  • Geben Sie Fensterstile, Fensterklassenstile und erweiterte Fensterstile an.

  • Schließen Sie die Fensterprozedur an.

  • Gewähren des Zugriffs auf das Fensterhandle (HWND).

  • Zerstören Sie das Fenster.

Die HwndSource -Klasse ist für die allgemeine Interoperabilität konzipiert und nicht als verwalteter HWND-Wrapper konzipiert. Im Allgemeinen werden keine verwalteten Methoden zum Bearbeiten des Fensters oder der Eigenschaften zum Überprüfen des Zustands bereitgestellt. Stattdessen bietet die HwndSource -Klasse zugriff auf das Win32-Fensterhandle (HWND) über die Handle -Eigenschaft, die mithilfe von PInvoke-Techniken an Win32-APIs übergeben werden kann, um das Fenster zu bearbeiten.

Bauwesen

Viele Aspekte des HwndSource können nur zur Bauzeit angegeben werden. Um eine HwndSourcezu erstellen, erstellen Sie zuerst eine HwndSourceParameters Struktur, und füllen Sie sie mit den gewünschten Parametern auf. Diese Parameter umfassen Folgendes:

  • Die Klassen-, Fenster- und erweiterten Fensterstile. Sie müssen PInvoke verwenden, um die Formatvorlagen zu ändern, nachdem das Fenster erstellt wurde. Nach dem Erstellen des Fensters können nicht alle Stile geändert werden. Lesen Sie die Win32-Dokumentation, bevor Sie fensterstile ändern.

  • Die Anfangsposition des Fensters.

  • Die anfängliche Größe des Fensters, die beinhaltet, ob die Größe angegeben ist oder aus der ermittelten Größe des WPF-Inhalts bestimmt werden soll.

  • Das übergeordnete Fenster.

  • Die HwndSourceHook , die in die Fensterprozedurkette eingeschlossen werden soll. Wenn Sie zur Bauzeit einen Hook angeben, empfängt er alle Meldungen für das Fenster. Sie können verwenden AddHook , um einen Hook hinzuzufügen, nachdem das Fenster erstellt wurde.

  • Die Transparenzeinstellungen. Ein Fenster der obersten Ebene kann so konfiguriert werden, dass es mit den anderen Fenstern auf dem Desktop gemäß der Transparenz pro Pixel des WPF-Inhalts kombiniert wird. Um dies zu aktivieren, legen Sie die UsesPerPixelOpacity -Eigenschaft in auf HwndSourceParameters fest true. Diese Eigenschaft kann nur zur Bauzeit und nur über die HwndSource(HwndSourceParameters) Konstruktorsignatur angegeben werden, und es werden mehrere Einschränkungen festgelegt.

Nachdem Sie die HwndSourceParameters Struktur aufgefüllt haben, übergeben Sie sie an den HwndSource(HwndSourceParameters) Konstruktor für HwndSource.

Lebensdauer eines Objekts

Ein HwndSource ist ein reguläres CLR-Objekt (Common Language Runtime), dessen Lebensdauer vom Garbage Collector verwaltet wird. Da die HwndSource eine nicht verwaltete Ressource darstellt, HwndSource implementiert IDisposable. Das synchrone Aufrufen Dispose zerstört das Win32-Fenster, wenn es vom Besitzerthread aufgerufen wird. Wenn es von einem anderen Thread aufgerufen wird, wird das Win32-Fenster asynchron zerstört. Das explizite Aufrufen Dispose des interoperabilitätscodes kann für bestimmte Interoperationsszenarien erforderlich sein.

Fensterprozeduren

Die HwndSource -Klasse implementiert eine eigene Fensterprozedur. Diese Fensterprozedur wird verwendet, um wichtige Fenstermeldungen zu verarbeiten, z. B. solche, die sich auf Layout, Rendering und Eingabe beziehen. Sie können die Fensterprozedur jedoch auch für Ihre eigene Verwendung einbinden. Sie können ihren eigenen Hook während der Konstruktion angeben, indem Sie die HwndSourceParameters.HwndSourceHook -Eigenschaft festlegen, oder Sie können auch und RemoveHook verwendenAddHook, um Hooks hinzuzufügen und zu entfernen, nachdem das Fenster erstellt wurde. Die Hooks werden nach der Last-in-First-Out-Reihenfolge aufgerufen, sodass Ihre Hooks vor der integrierten Verarbeitung ausgeführt werden können. Die tatsächlichen Hooks werden von einem schwachen Verweis gehalten. Stellen Sie daher sicher, dass Sie die Lebensdauer Ihres Hookdelegaten verwalten.

Weitere Informationen zu HwndSource und anderen Interoperationsklassen finden Sie unter WPF und Win32 Interoperation.

Beachten Sie, dass die Konstruktoren für HwndSource Parameter verwenden, die den Parametern für Win32-Funktionen wie CreateWindowEx ähneln.

Skalierungstransformationen sollten nicht auf die RootVisual eines HwndSourceangewendet werden. Weitere Informationen finden Sie unter Hinweise zu RootVisual.

Konstruktoren

HwndSource(HwndSourceParameters)

Initialisiert eine neue Instanz der HwndSource-Klasse unter Verwendung einer Struktur, die die Ausgangseinstellungen enthält.

HwndSource(Int32, Int32, Int32, Int32, Int32, Int32, Int32, String, IntPtr)

Initialisiert eine neue Instanz der HwndSource-Klasse unter Angabe von Klassenstil, Stil, erweitertem Stil, x-y-Position, Breite, Höhe, Name und übergeordnetem Fenster.

HwndSource(Int32, Int32, Int32, Int32, Int32, Int32, Int32, String, IntPtr, Boolean)

Initialisiert eine neue Instanz der HwndSource-Klasse unter Angabe von Klassenstil, Stil, erweitertem Stil, x-y-Position, Breite, Höhe, Name und übergeordnetem Fenster sowie ggf. automatischer Größenänderung.

HwndSource(Int32, Int32, Int32, Int32, Int32, String, IntPtr)

Initialisiert eine neue Instanz der HwndSource-Klasse unter Angabe von Klassenstil, Stil, erweitertem Stil, x-y-Position, Name und übergeordnetem Fenster.

Eigenschaften

AcquireHwndFocusInMenuMode

Ruft den Wert ab, der bestimmt, ob für diese HwndSource der Win32-Fokus für das Fenster mit WPF erhalten werden soll.

ChildKeyboardInputSinks

Ruft eine Sequenz registrierter Eingabesenken ab.

CompositionTarget

Ruft den visuellen Manager für das gehostete Fenster ab.

DefaultAcquireHwndFocusInMenuMode

Ruft den AcquireHwndFocusInMenuMode-Standardwert für neue Instanzen des HwndSource-Objekts ab oder legt diesen fest.

Dispatcher

Ruft den Dispatcher ab, der diesem DispatcherObject zugeordnet ist.

(Geerbt von DispatcherObject)
Handle

Ruft das Fensterhandle für diese HwndSource ab.

IsDisposed

Ruft einen Wert ab, der angibt, ob Dispose() für diese HwndSource aufgerufen wurde.

KeyboardInputSiteCore

Ruft einen Verweis auf die IKeyboardInputSite-Schnittstelle des Containers der Komponente ab oder legt diesen Verweis fest.

RestoreFocusMode

Ruft das RestoreFocusMode-Objekt für das Fenster ab.

RootVisual

Ruft das RootVisual des Fensters ab oder legt dieses fest.

SizeToContent

Ruft ab oder legt fest, ob und wie die Fenstergröße an den Inhalt angepasst wird.

UsesPerPixelOpacity

Ruft einen Wert ab, der deklariert, ob der Durchlässigkeitswert pro Pixel des Quellfensterinhalts berücksichtigt wird.

Methoden

AddHook(HwndSourceHook)

Fügt einen Ereignishandler hinzu, der alle Fenstermeldungen empfängt.

AddSource()

Fügt der Liste bekannter Präsentationsquellen eine abgeleitete Instanz der PresentationSource-Klasse hinzu.

(Geerbt von PresentationSource)
CheckAccess()

Bestimmt, ob der aufrufende Thread auf dieses DispatcherObject zugreifen kann.

(Geerbt von DispatcherObject)
ClearContentRenderedListeners()

Legt die Liste mit Listenern für das ContentRendered-Ereignis auf null fest.

(Geerbt von PresentationSource)
CreateHandleRef()

Ruft das Fensterhandle für HwndSource ab. Das Fensterhandle wird als Teil einer HandleRef-Struktur zusammengefasst.

Dispose()

Gibt alle verwalteten Ressourcen frei, die von der HwndSource verwendet werden, und löst das Disposed-Ereignis aus.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
FromHwnd(IntPtr)

Gibt das HwndSource-Objekt des angegebenen Fensters zurück.

GetCompositionTargetCore()

Ruft das visuelle Ziel des Fensters ab.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
HasFocusWithinCore()

Ruft einen Wert ab, mit dem angegeben wird, ob die Senke oder eine der enthaltenen Komponenten den Fokus hat.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
OnDpiChanged(HwndDpiChangedEventArgs)

Wird aufgerufen, wenn der DPI-Wert für das Fenster sich ändert.

OnMnemonicCore(MSG, ModifierKeys)

Wird aufgerufen, wenn eines der mnemonischen Zeichen (Zugriffstasten) dieser Senke aufgerufen wird.

RegisterKeyboardInputSinkCore(IKeyboardInputSink)

Registriert die IKeyboardInputSink-Schnittstelle einer enthaltenen Komponente.

RemoveHook(HwndSourceHook)

Entfernt die Ereignishandler, die von AddHook(HwndSourceHook) hinzugefügt wurden.

RemoveSource()

Entfernt eine abgeleitete Instanz der PresentationSource-Klasse aus der Liste bekannter Präsentationsquellen.

(Geerbt von PresentationSource)
RootChanged(Visual, Visual)

Stellt Benachrichtigung über Änderungen der Visual-Stammklasse bereit.

(Geerbt von PresentationSource)
TabIntoCore(TraversalRequest)

Legt den Fokus auf den ersten oder letzten Tabstopp der Senke fest.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
TranslateAcceleratorCore(MSG, ModifierKeys)

Verarbeitet Tastatureingaben auf der Ebene von Meldungen für gedrückte Tasten.

TranslateCharCore(MSG, ModifierKeys)

Verarbeitet die Eingabemeldungen WM_CHAR, WM_SYSCHAR, WM_DEADCHAR und WM_SYSDEADCHAR, bevor die OnMnemonic(MSG, ModifierKeys)-Methode aufgerufen wird.

VerifyAccess()

Erzwingt, dass der aufrufende Thread auf dieses DispatcherObject zugreifen kann.

(Geerbt von DispatcherObject)

Ereignisse

AutoResized

Tritt ein, wenn das Layout eine automatische Größenänderung von HwndSource veranlasst.

ContentRendered

Tritt auf, wenn der Inhalt gerendert wurde und für Benutzerinteraktionen bereit ist.

(Geerbt von PresentationSource)
Disposed

Tritt ein, wenn die Dispose()-Methode für dieses Objekt aufgerufen wird.

DpiChanged

Tritt auf, wenn der DPI-Wert des Monitors dieses Hwnd sich geändert hat, oder das Hwnd zu einem Monitor mit einem anderen DPI-Wert verschoben wird.

SizeToContentChanged

Tritt auf, wenn sich der Wert der SizeToContent-Eigenschaft ändert.

Explizite Schnittstellenimplementierungen

IKeyboardInputSink.HasFocusWithin()

Eine Beschreibung dieses Elements finden Sie unter IList.Remove(Object).

IKeyboardInputSink.KeyboardInputSite

Eine Beschreibung dieses Elements finden Sie unter KeyboardInputSite.

IKeyboardInputSink.OnMnemonic(MSG, ModifierKeys)

Eine Beschreibung dieses Elements finden Sie unter OnMnemonic(MSG, ModifierKeys).

IKeyboardInputSink.RegisterKeyboardInputSink(IKeyboardInputSink)

Eine Beschreibung dieses Elements finden Sie unter RegisterKeyboardInputSink(IKeyboardInputSink).

IKeyboardInputSink.TabInto(TraversalRequest)

Eine Beschreibung dieses Elements finden Sie unter TabInto(TraversalRequest).

IKeyboardInputSink.TranslateAccelerator(MSG, ModifierKeys)

Eine Beschreibung dieses Elements finden Sie unter TranslateAccelerator(MSG, ModifierKeys).

IKeyboardInputSink.TranslateChar(MSG, ModifierKeys)

Eine Beschreibung dieses Elements finden Sie unter TranslateChar(MSG, ModifierKeys).

Gilt für:

Weitere Informationen