CoreIndependentInputSource Classe

Definizione

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à
Object Platform::Object IInspectable CoreIndependentInputSource
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.

Si applica a

Vedi anche