Freigeben über


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 über einen DispatcherQueueController-in einem Hintergrundthread 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. PointerEntered
  2. PointerPressed
  3. ZeigerMoved
  4. PointerReleased
  5. PointerExited

Wo PointerMoved nur ausgelöst wird, wenn der Zeiger bewegt wird oder die Schaltfläche beim Mauszeiger angezeigt wird. 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 nur geschieht, nachdem PointerPressed empfangen wurde, werden keine zusätzlichen Ereignisse für diesen Zeiger ausgelöst. Insbesondere werden PointerReleased und PointerExited- 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. PointerEntered
  2. PointerPressed
  3. ZeigerMoved
  4. PointerCaptureLost

Routingereignisse

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. PointerEntered
  2. PointerPressed
  3. ZeigerMoved
  4. PointerRoutedAway
  5. PointerRoutedTo
  6. PointerReleased
  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. PointerEntered
  2. PointerPressed
  3. ZeigerMoved
  4. PointerRoutedAway
  5. PointerRoutedReleased

Anmerkung

Wenn PointerRoutedReleased ausgelöst wird, werden für diesen Zeiger keine zusätzlichen Ereignisse ausgelöst. Insbesondere werden PointerReleased- und PointerExited- 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. PointerEntered
  2. PointerPressed
  3. PointerRoutedTo
  4. ZeigerMoved
  5. PointerReleased
  6. PointerExited

Eigenschaften

Cursor

Dient zum Abrufen oder Festlegen des Cursors, der angezeigt wird, wenn ein Maus- oder Stiftzeiger über dem Eingabeziel, einem Visual oder WindowId- (HWND) dieses InputPointerSource-.

DeviceKinds

Ruft die von diesem InputPointerSourceunterstützten Gerätetypen ab.

DispatcherQueue

Ruft den DispatcherQueue- für das InputObject ab.

(Geerbt von InputObject)

Methoden

GetForIsland(ContentIsland)

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

Ereignisse

PointerCaptureLost

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

PointerEntered

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

PointerExited

Tritt auf, wenn ein Zeiger aus den Grenzen dieses InputPointerSource-verschoben wird.

PointerMoved

Tritt auf, wenn ein Zeiger innerhalb der Grenzen dieses InputPointerSource-bewegt 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 Digitalisierungsoberfläche angehoben), während innerhalb der Grenzen dieses InputPointerSource-.

PointerRoutedAway

Tritt auf, wenn ein Zeiger zu einem anderen 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 an diese InputPointerSource von einem anderen Eingabeziel weitergeleitet wird.

PointerWheelChanged

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

Gilt für:

Weitere Informationen