InputPointerSource Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt ein Objekt dar, das für die Berichtszeigereingabe registriert ist und Zeigercursor und Eingabeereignisbehandlung bereitstellt.
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
- Attribute
Beispiele
Das folgende Beispiel zeigt, wie Sie ein SwapChainPanel mit CreateCoreIndependentInputSource konfigurieren und Stift- und Toucheingaben mit niedriger Latenz für einen 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 Sie das Bild des Systemhandcursors so konfigurieren, dass es angezeigt wird, wenn der Cursor über ein SwapChainPanel bewegt wird:
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:
- PointerEntered
- PointerPressed
- PointerMoved
- PointerReleased
- PointerExited
Wobei PointerMoved nur ausgelöst wird, wenn sich der Zeiger bewegt oder die Schaltflächenzustände auf der Maus geändert werden. Alle Ereignisse weisen dieselbe Zeiger-ID auf.
Zeigererfassung verloren
PointerCaptureLost wird ausgelöst, wenn ein Kontaktzeiger vom Eingabesystem an ein anderes Eingabeziel weitergeleitet wird. Wenn PointerCaptureLost ausgelöst wird, was erst geschieht, nachdem PointerPressed empfangen wurde, werden für diesen Zeiger keine zusätzlichen Ereignisse ausgelöst. Insbesondere werden PointerReleased und PointerExited nicht ausgelöst, sodass Sie PointerCaptureLost als gültigen Endzustand für einen bestimmten Zeiger behandeln sollten. Hier sehen Sie ein Beispiel für eine gültige Abfolge von Ereignissen, die eine verlustreiche Zeigererfassung umfasst:
- PointerEntered
- PointerPressed
- PointerMoved
- 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 Kontaktzeiger zurückgeleitet wird, bevor der Zeiger losgelassen wird.
Im Folgenden wird eine gültige Abfolge von Ereignissen gezeigt, bei denen der Kontaktzeiger an ein anderes Ziel weitergeleitet, an die ursprüngliche InputPointerSource zurückgeleitet und dann freigegeben wird:
- PointerEntered
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedTo
- PointerReleased
- PointerExited
Hier sehen Sie ein Beispiel für eine gültige Sequenz von Ereignissen, bei der ein Kontaktzeiger an ein anderes Ziel weitergeleitet und dann für das andere Ziel freigegeben wird:
- PointerEntered
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedReleased
Hinweis
Wenn PointerRoutedReleased ausgelöst wird, werden für diesen Zeiger keine zusätzlichen Ereignisse ausgelöst. Insbesondere werden PointerReleased und PointerExited nicht ausgelöst, sodass Sie PointerRoutedReleased als gültigen Endzustand für einen bestimmten Zeiger behandeln sollten.
Es ist auch möglich, einen brandneuen Kontaktzeiger zu erhalten, der von einem anderen Ziel weitergeleitet wurde. In diesem Fall sind die PointerEntered - und PointerPressed-Ereignisse garantiert einem PointerRoutedTo vorangestellt, wenn der Zeiger von der aktuellen InputPointerSource noch nicht erkannt wurde. Im Folgenden finden Sie ein Beispiel für diese Ereignissequenz:
- PointerEntered
- PointerPressed
- PointerRoutedTo
- PointerMoved
- PointerReleased
- PointerExited
Eigenschaften
Cursor |
Ruft den Cursor ab, der angezeigt wird, wenn sich ein Maus- oder Stiftzeiger über dem Eingabeziel, einem Visual oder einer WindowId (HWND) dieser InputPointerSource befindet, oder legt diesen fest. |
DeviceKinds |
Ruft die gerätetypen ab, die von dieser InputPointerSource unterstützt werden. |
DispatcherQueue |
Ruft die 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 dieser InputPointerSource zu einem anderen Eingabeziel verschoben wird. |
PointerEntered |
Tritt auf, wenn ein Zeiger in die Grenzen dieser InputPointerSource bewegt wird. |
PointerExited |
Tritt auf, wenn sich ein Zeiger außerhalb der Grenzen dieser InputPointerSource bewegt. |
PointerMoved |
Tritt auf, wenn sich ein Zeiger innerhalb der Grenzen dieser InputPointerSource bewegt. |
PointerPressed |
Tritt auf, wenn eine Maustaste gedrückt wird oder ein Finger oder Stift den Kontakt mit der Digitalisiereroberfläche initiiert, während sich die Grenzen dieser InputPointerSource-Schnittstelle bewegen. |
PointerReleased |
Tritt auf, wenn ein Zeigergerät, das zuvor eine Drücken-Aktion initiiert hat, losgelassen wird (eine Maustaste wird losgelassen, oder ein Touch- oder Stiftkontakt wird von der Digitalisiereroberfläche angehoben), während es sich innerhalb der Grenzen dieser InputPointerSource befindet. |
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, auf diesem anderen Eingabeziel veröffentlicht 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). |
Gilt für:
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für