CoreIndependentInputSource Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Visualizza le API di input principali per gli scenari di interoperabilità.
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
- Ereditarietà
- Attributi
- Implementazioni
Requisiti Windows
Famiglia di dispositivi |
Windows 10 (è stato introdotto in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)
|
Esempio
Inizializzazione dell'input indipendente.
// 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);
Per un codice di esempio di come usare CreateCoreIndependentInputSource e CoreIndependentInputSource , vedere la definizione della classe che fa parte dell'esempio DrawingPanel
di interoperabilità DirectX directX XAML SwapChainPanel.
Commenti
Creare un'istanza di questa classe chiamando SwapChainBackgroundPanel.CreateCoreIndependentInputSource o SwapChainPanel.CreateCoreIndependentInputSource.
La classe CoreIndependentInputSource consente a un'app di gestire l'input e il rendering indipendente dal thread dell'interfaccia utente XAML, perché si fornisce intenzionalmente la logica di elaborazione di input in un thread in background. È necessario chiamare CreateCoreIndependentInputSource da un thread non dell'interfaccia utente, altrimenti la chiamata al metodo CreateCoreIndependentInputSource avrà esito negativo.
Cronologia delle versioni
Versione di Windows | Versione dell'SDK | Valore aggiunto |
---|---|---|
1803 | 17134 | DispatcherQueue |
Proprietà
Dispatcher |
Ottiene il dispatcher eventi per la finestra. |
DispatcherQueue |
Ottiene dispatcherQueue associato a coreIndependentInputSource. |
HasCapture |
Ottiene un valore che segnala se la finestra ha l'acquisizione del puntatore. |
IsInputEnabled |
Ottiene o imposta un valore che indica se l'input è abilitato per l'app UWP. |
PointerCursor |
Ottiene o imposta il cursore del puntatore usato dall'app. |
PointerPosition |
Ottiene le coordinate client del puntatore. |
Metodi
ReleasePointerCapture() |
Disabilita l'acquisizione del puntatore per l'app UWP. |
SetPointerCapture() |
Abilita l'acquisizione del puntatore per l'app UWP. |
Eventi
InputEnabled |
Si verifica quando l'input è abilitato o disabilitato per l'app UWP. |
PointerCaptureLost |
Si verifica quando un puntatore passa a un'altra app UWP. Questo evento viene generato dopo PointerExited ed è l'evento finale ricevuto dall'app per questo puntatore. |
PointerEntered |
Si verifica quando un puntatore si sposta nella casella di selezione dell'app UWP. |
PointerExited |
Si verifica quando il puntatore si sposta all'esterno del rettangolo di selezione dell'app UWP. |
PointerMoved |
Si verifica quando un puntatore si sposta all'interno del rettangolo di selezione dell'app UWP. |
PointerPressed |
Si verifica quando viene fatto clic su un pulsante del mouse oppure viene rilevato un contatto tocco o penna, all'interno del rettangolo di selezione dell'app UWP. |
PointerReleased |
Si verifica quando viene rilasciato un pulsante del mouse o un contatto tocco o penna, all'interno del rettangolo di associazione dell'app UWP. |
PointerRoutedAway |
Si verifica sull'input del puntatore di ricezione dell'oggetto di input quando il puntatore viene reindirizzato a un altro oggetto di input (eventualmente in un processo separato). |
PointerRoutedReleased |
Si verifica su tutti gli oggetti di input mai associati, ma non riceve attualmente l'input da, un puntatore che genera un evento CoreIndependentInputSource.PointerReleased in un oggetto di input. |
PointerRoutedTo |
Si verifica quando l'input del puntatore acquisito in precedenza viene recapitato a un altro oggetto, passa al recapito a questo oggetto. |
PointerWheelChanged |
Si verifica quando il pulsante della rotellina viene ruotato. |