CoreIndependentInputSource 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.
Surfaces-Kerneingabe-APIs für Interoperationsszenarien.
public ref class CoreIndependentInputSource sealed : ICoreInputSourceBase, ICorePointerInputSource
public ref class CoreIndependentInputSource sealed : ICoreInputSourceBase, ICorePointerInputSource2
public ref class CoreIndependentInputSource sealed : ICoreInputSourceBase, ICorePointerInputSource2, ICorePointerRedirector
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class CoreIndependentInputSource final : ICoreInputSourceBase, ICorePointerInputSource
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class CoreIndependentInputSource final : ICoreInputSourceBase, ICorePointerInputSource2
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class CoreIndependentInputSource final : ICoreInputSourceBase, ICorePointerInputSource2, ICorePointerRedirector
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class CoreIndependentInputSource : ICoreInputSourceBase, ICorePointerInputSource
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class CoreIndependentInputSource : ICoreInputSourceBase, ICorePointerInputSource2
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class CoreIndependentInputSource : ICoreInputSourceBase, ICorePointerInputSource2, ICorePointerRedirector
Public NotInheritable Class CoreIndependentInputSource
Implements ICoreInputSourceBase, ICorePointerInputSource
Public NotInheritable Class CoreIndependentInputSource
Implements ICoreInputSourceBase, ICorePointerInputSource2
Public NotInheritable Class CoreIndependentInputSource
Implements ICoreInputSourceBase, ICorePointerInputSource2, ICorePointerRedirector
- Vererbung
- Attribute
- Implementiert
Windows-Anforderungen
Gerätefamilie |
Windows 10 (eingeführt in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)
|
Beispiele
Initialisieren der unabhängigen Eingabe.
// MainPage.cpp
#include "pch.h"
#include "MainPage.h"
#include <winrt/Windows.System.Threading.h>
#include <winrt/Windows.UI.Core.h>
#include <winrt/Windows.UI.Xaml.Controls.h>
using namespace winrt;
using namespace Windows::UI::Xaml;
using namespace Windows::UI::Xaml::Controls;
Windows::Foundation::IAsyncAction m_inputLoopWorker;
...
// Create a task to register for independent input and begin processing input messages.
Windows::System::Threading::WorkItemHandler workItemHandler([this](Windows::Foundation::IAsyncAction const& /* action */)
{
// The CoreIndependentInputSource will raise pointer events for the specified device types on whichever thread it's created on.
Windows::UI::Core::CoreIndependentInputSource coreInput{
MySwapChainPanel().CreateCoreIndependentInputSource(
Windows::UI::Core::CoreInputDeviceTypes::Mouse |
Windows::UI::Core::CoreInputDeviceTypes::Touch |
Windows::UI::Core::CoreInputDeviceTypes::Pen)
};
// Register for pointer events, which will be raised on the background thread.
coreInput.PointerPressed({ this, &MainPage::SCP_OnPointerPressed });
coreInput.PointerMoved({ this, &MainPage::SCP_OnPointerMoved });
coreInput.PointerReleased({ this, &MainPage::SCP_OnPointerReleased });
// Begin processing input messages as they're delivered.
coreInput.Dispatcher().ProcessEvents(Windows::UI::Core::CoreProcessEventsOption::ProcessUntilQuit);
});
// Run task on a dedicated high priority background thread.
m_inputLoopWorker = Windows::System::Threading::ThreadPool::RunAsync(
workItemHandler, Windows::System::Threading::WorkItemPriority::High,
Windows::System::Threading::WorkItemOptions::TimeSliced);
...
void MainPage::SCP_OnPointerPressed(Windows::Foundation::IInspectable const& /* sender */,
Windows::UI::Core::PointerEventArgs const& /* args */) {}
void MainPage::SCP_OnPointerMoved(Windows::Foundation::IInspectable const& /* sender */,
Windows::UI::Core::PointerEventArgs const& /* args */) {}
void MainPage::SCP_OnPointerReleased(Windows::Foundation::IInspectable const& /* sender */,
Windows::UI::Core::PointerEventArgs const& /* args */) {}
// Create a task to register for independent input and begin processing input messages.
auto workItemHandler = ref new WorkItemHandler([this] (IAsyncAction ^)
{
// The CoreIndependentInputSource will raise pointer events for the specified device types on whichever thread it's created on.
CoreIndependentInputSource^ coreInput = CreateCoreIndependentInputSource(
Windows::UI::Core::CoreInputDeviceTypes::Mouse |
Windows::UI::Core::CoreInputDeviceTypes::Touch |
Windows::UI::Core::CoreInputDeviceTypes::Pen
);
// Register for pointer events, which will be raised on the background thread.
coreInput->PointerPressed += ref new TypedEventHandler<Object^, PointerEventArgs^>(this, &MyClass::OnPointerPressed);
coreInput->PointerMoved += ref new TypedEventHandler<Object^, PointerEventArgs^>(this, &MyClass::OnPointerMoved);
coreInput->PointerReleased += ref new TypedEventHandler<Object^, PointerEventArgs^>(this, &MyClass::OnPointerReleased);
// Begin processing input messages as they're delivered.
coreInput->Dispatcher->ProcessEvents(CoreProcessEventsOption::ProcessUntilQuit);
});
// Run task on a dedicated high priority background thread.
m_inputLoopWorker = ThreadPool::RunAsync(workItemHandler, WorkItemPriority::High, WorkItemOptions::TimeSliced);
Weitere Beispielcodes zur Verwendung von CreateCoreIndependentInputSource und CoreIndependentInputSource finden Sie in der DrawingPanel
Klassendefinition, die Teil des XAML SwapChainPanel DirectX-Interopbeispiels ist.
Hinweise
Erstellen Sie eine instance dieser Klasse, indem Sie SwapChainBackgroundPanel.CreateCoreIndependentInputSource oder SwapChainPanel.CreateCoreIndependentInputSource aufrufen.
Mit der CoreIndependentInputSource-Klasse kann eine App Eingabe und Rendering unabhängig vom XAML-UI-Thread verarbeiten, da Sie die Eingabeverarbeitungslogik absichtlich für einen Hintergrundthread bereitstellen. Sie müssen CreateCoreIndependentInputSource aus einem Nicht-UI-Thread aufrufen, andernfalls schlägt der Aufruf der CreateCoreIndependentInputSource-Methode fehl.
Versionsverlauf
Windows-Version | SDK-Version | Wertschöpfung |
---|---|---|
1803 | 17134 | DispatcherQueue |
Eigenschaften
Dispatcher |
Ruft den Ereignisverteiler für das Fenster ab. |
DispatcherQueue |
Ruft den DispatcherQueue ab, der dieser CoreIndependentInputSource zugeordnet ist. |
HasCapture |
Ruft einen Wert ab, der angibt, ob das Fenster über eine Zeigererfassung verfügt. |
IsInputEnabled |
Ruft einen Wert ab, der angibt, ob die Eingabe für die UWP-App aktiviert ist, oder legt diesen fest. |
PointerCursor |
Ruft den von der App verwendeten Zeigercursor ab oder legt diesen fest. |
PointerPosition |
Ruft die Clientkoordinaten des Zeigers ab. |
Methoden
ReleasePointerCapture() |
Deaktiviert die Zeigererfassung für die UWP-App. |
SetPointerCapture() |
Aktiviert die Zeigererfassung für die UWP-App. |
Ereignisse
InputEnabled |
Tritt auf, wenn die Eingabe für die UWP-App aktiviert oder deaktiviert ist. |
PointerCaptureLost |
Tritt auf, wenn ein Zeiger auf eine andere UWP-App wechselt. Dieses Ereignis wird nach PointerExited ausgelöst und ist das letzte Ereignis, das von der App für diesen Zeiger empfangen wird. |
PointerEntered |
Tritt auf, wenn sich ein Zeiger in das Begrenzungsfeld der UWP-App bewegt. |
PointerExited |
Tritt auf, wenn sich der Zeiger außerhalb des Begrenzungsrahmens der UWP-App bewegt. |
PointerMoved |
Tritt auf, wenn sich ein Zeiger innerhalb des Begrenzungsrahmens der UWP-App bewegt. |
PointerPressed |
Tritt auf, wenn im umgebenden Rechteck der UWP-App auf eine Maustaste geklickt oder ein Touch- oder Stiftkontakt erkannt wird. |
PointerReleased |
Tritt auf, wenn eine Maustaste losgelassen oder ein Berührungs- oder Stiftkontakt innerhalb des umgebenden Rechtecks der UWP-App aufgehoben wird. |
PointerRoutedAway |
Tritt für das Eingabeobjekt auf, das zeigereingabe empfängt, wenn der Zeiger auf ein anderes Eingabeobjekt umgeleitet wird (möglicherweise in einem separaten Prozess). |
PointerRoutedReleased |
Tritt für alle Eingabeobjekte auf, die jemals einer Eingabe zugeordnet sind, aber derzeit keine Eingabe von empfangen, ein Zeiger, der ein CoreIndependentInputSource.PointerReleased-Ereignis für ein Eingabeobjekt auslöst. |
PointerRoutedTo |
Tritt auf, wenn erfasste Zeigereingaben, die zuvor an ein anderes Objekt übermittelt wurden, zur Übermittlung an dieses Objekt übergehen. |
PointerWheelChanged |
Tritt auf, wenn die Radtaste gedreht wird. |