Sprache

InputPointerSource Klasse

Definition

Stellt ein Objekt dar, das registriert ist, um Zeigereingaben zu melden und Zeigercursor und Eingabeereignisbehandlung bereitzustellen.

public ref class InputPointerSource sealed : InputObject
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Foundation.WindowsAppSDKContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class InputPointerSource final : InputObject
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.WindowsAppSDKContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class InputPointerSource : InputObject
Public NotInheritable Class InputPointerSource
Inherits InputObject
Vererbung
Object Platform::Object IInspectable InputObject InputPointerSource
Attribute

Beispiele

Das folgende Beispiel zeigt, wie Sie eine SwapChainPanel mit CreateCoreIndependentInputSource konfigurieren und Stift- und Toucheingaben mit geringer Latenz in einem Hintergrundthread über einen DispatcherQueueController empfangen.

void SetupBackgroundPenInput(SwapChainPanel swapChainPanel)
{
    m_dispatcherQueueController = DispatcherQueueController::CreateOnDedicatedThread();

    m_dispatcherQueueController.DispatcherQueue().TryEnqueue([this] {

        InputPointerSourceDeviceKinds deviceKind = (InputPointerSourceDeviceKinds)(
            Microsoft::UI::Input::InputPointerSourceDeviceKinds::Touch |
            Microsoft::UI::Input::InputPointerSourceDeviceKinds::Pen);
        m_coreInput = swapChainPanel().CreateCoreIndependentInputSource(deviceKind);

        m_coreInput.PointerMoved({ this, &DirectXPage::SwapChainPanel_OnPointerMoved });
        });
}


void DirectXPage::SwapChainPanel_OnPointerPressed(InputPointerSource const& sender, Microsoft::UI::Input::PointerEventArgs const& e)
{
    // When the pointer is pressed begin tracking the pointer movement.
    m_main->StartTracking();
}

In diesem Beispiel wird gezeigt, wie Das Bild des Systemhandcursors so konfiguriert wird, dass es angezeigt wird, wenn der Cursor auf ein SwapChainPanel zeigt:

InputPointerSourceDeviceKinds deviceKind = (InputPointerSourceDeviceKinds)(
    Microsoft::UI::Input::InputPointerSourceDeviceKinds::Touch |
    Microsoft::UI::Input::InputPointerSourceDeviceKinds::Mouse |
    Microsoft::UI::Input::InputPointerSourceDeviceKinds::Pen);
m_coreInput = swapChainPanel().CreateCoreIndependentInputSource(deviceKind);

m_coreInput.InputCursor = InputSystemCursor.Create(InputSystemCursorShape.Hand);

Hinweise

Der Koordinatenbereich für die Zeigerereignisse befindet sich im gleichen Koordinatenbereich wie das SwapChainPanel-Objekt .

Ereignisreihenfolge

Normalfall

Die Zeigerereignisse von InputPointerSource folgen unter normalen Umständen einer garantierten Reihenfolge:

  1. Zeigereingabe
  2. PointerPressed
  3. ZeigerBewegt
  4. ZeigerFreigegeben
  5. PointerExited

Wo PointerMoved nur ausgelöst wird, wenn der Mauszeiger bewegt oder die Schaltflächenzustände bei der Mausänderung angezeigt werden. Alle Ereignisse haben dieselbe Zeiger-ID.

Zeigererfassung verloren

PointerCaptureLost wird ausgelöst, wenn ein Kontaktzeiger vom Eingabesystem an ein anderes Eingabeziel weitergeleitet wird. Wenn PointerCaptureLost ausgelöst wird, was erst nach dem Empfang von PointerPressed geschieht, werden keine zusätzlichen Ereignisse für diesen Zeiger ausgelöst. Insbesondere " PointerReleased " und "PointerExited " werden nicht ausgelöst, daher sollten Sie "PointerCaptureLost" als gültigen Endzustand für einen bestimmten Zeiger behandeln. Nachfolgend finden Sie ein Beispiel für eine gültige Abfolge von Ereignissen, die den Verlust der Zeigererfassung umfassen:

  1. Zeigereingabe
  2. PointerPressed
  3. ZeigerBewegt
  4. ZeigererfassungVerloren

Geroutete Ereignisse

Zeigerroutenereignisse werden ausgelöst, wenn ein Kontaktzeiger vom Eingabesystem an ein anderes Eingabeziel weitergeleitet wird. Im Gegensatz zu PointerCaptureLost bieten die Routingereignisse die Möglichkeit, dass der In-Contact-Zeiger zurückgeroutet wird, bevor der Zeiger losgelassen wird.

Im Folgenden finden Sie eine gültige Abfolge von Ereignissen, bei denen der Kontaktzeiger an ein anderes Ziel weitergeleitet wird, zurück an die ursprüngliche InputPointerSource weitergeleitet und dann losgelassen wird:

  1. Zeigereingabe
  2. PointerPressed
  3. ZeigerBewegt
  4. PointerRoutedAway
  5. PointerRoutedTo
  6. ZeigerFreigegeben
  7. PointerExited

Hier ist ein Beispiel für eine gültige Abfolge von Ereignissen, bei denen ein Kontaktzeiger an ein anderes Ziel weitergeleitet und dann für das andere Ziel freigegeben wird:

  1. Zeigereingabe
  2. PointerPressed
  3. ZeigerBewegt
  4. PointerRoutedAway
  5. PointerRoutedReleased

Hinweis

Wenn PointerRoutedReleased ausgelöst wird, werden für diesen Zeiger keine zusätzlichen Ereignisse ausgelöst. Insbesondere " PointerReleased " und "PointerExited " werden nicht ausgelöst. Daher sollten Sie PointerRoutedReleased als gültigen Endzustand für einen bestimmten Zeiger behandeln.

Es ist auch möglich, einen brandneuen In-Contact-Zeiger zu erhalten, der von einem anderen Ziel geleitet wurde. In diesem Fall werden die PointerEntered - und PointerPressed-Ereignisse garantiert einem PointerRoutedTo vorangestellt, wenn der Zeiger noch nicht von der aktuellen InputPointerSource gesehen wurde. Im Folgenden finden Sie ein Beispiel für diese Abfolge von Ereignissen:

  1. Zeigereingabe
  2. PointerPressed
  3. PointerRoutedTo
  4. ZeigerBewegt
  5. ZeigerFreigegeben
  6. PointerExited

Eigenschaften

Name Beschreibung
ActivationBehavior

Stellt ein Objekt dar, das registriert ist, um Zeigereingaben zu melden und Zeigercursor und Eingabeereignisbehandlung bereitzustellen.

Cursor

Dient zum Abrufen oder Festlegen des Cursors, der angezeigt wird, wenn sich ein Maus- oder Stiftzeiger über dem Eingabeziel, einer visuellen oder WindowId (HWND) dieser InputPointerSource befindet.

DeviceKinds

Ruft die von dieser InputPointerSource unterstützten Gerätetypen ab.

DispatcherQueue

Ruft den DispatcherQueue für das InputObject ab.

(Geerbt von InputObject)

Methoden

Name Beschreibung
GetForIsland(ContentIsland)

Ruft ein InputPointerSource - Objekt für die angegebene ContentIsland ab.

GetForVisual(Visual)

Stellt ein Objekt dar, das registriert ist, um Zeigereingaben zu melden und Zeigercursor und Eingabeereignisbehandlung bereitzustellen.

GetForWindowId(WindowId)

Stellt ein Objekt dar, das registriert ist, um Zeigereingaben zu melden und Zeigercursor und Eingabeereignisbehandlung bereitzustellen.

RemoveForVisual(Visual)

Stellt ein Objekt dar, das registriert ist, um Zeigereingaben zu melden und Zeigercursor und Eingabeereignisbehandlung bereitzustellen.

TrySetDeviceKinds(InputPointerSourceDeviceKinds)

Stellt ein Objekt dar, das registriert ist, um Zeigereingaben zu melden und Zeigercursor und Eingabeereignisbehandlung bereitzustellen.

Ereignisse

Name Beschreibung
DirectManipulationHitTest

Stellt ein Objekt dar, das registriert ist, um Zeigereingaben zu melden und Zeigercursor und Eingabeereignisbehandlung bereitzustellen.

PointerCaptureLost

Tritt auf, wenn ein Zeiger in Kontakt mit dieser InputPointerSource zu einem anderen Eingabeziel wechselt.

PointerEntered

Tritt auf, wenn ein Zeiger in die Grenzen dieser InputPointerSource wechselt.

PointerExited

Tritt auf, wenn ein Zeiger außerhalb der Grenzen dieser InputPointerSource bewegt wird.

PointerMoved

Tritt auf, wenn ein Zeiger innerhalb der Grenzen dieser InputPointerSource verschoben wird.

PointerPressed

Tritt auf, wenn eine Maustaste gedrückt wird, oder ein Finger oder Stift den Kontakt mit der Digitalisiereroberfläche initiiert, während innerhalb der Grenzen dieser InputPointerSource.

PointerReleased

Tritt auf, wenn ein Zeigergerät, das zuvor eine Drücken-Aktion initiiert hat, losgelassen wird (eine Maustaste losgelassen wird, oder ein Touch- oder Stiftkontakt wird von der Digitalisierungsgerätoberfläche angehoben), während innerhalb der Grenzen dieser InputPointerSource.

PointerRoutedAway

Tritt auf, wenn ein Zeiger an eine andere InputPointerSource umgeleitet wird (möglicherweise in einem separaten Prozess).

PointerRoutedReleased

Tritt auf, wenn der Zeiger, der an eine andere InputPointerSource weitergeleitet wurde, für dieses andere Eingabeziel freigegeben wird.

PointerRoutedTo

Tritt auf, wenn ein Zeiger von einem anderen Eingabeziel an diese InputPointerSource weitergeleitet wird.

PointerWheelChanged

Tritt auf, wenn das Mausrad gedreht wird (der Raddeltawert ändert sich).

TouchHitTesting

Stellt ein Objekt dar, das registriert ist, um Zeigereingaben zu melden und Zeigercursor und Eingabeereignisbehandlung bereitzustellen.

Gilt für:

Weitere Informationen