Partager via


CoreIndependentInputSource Classe

Définition

API d’entrée principale Surfaces pour les scénarios d’interopérabilité.

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
Héritage
Object Platform::Object IInspectable CoreIndependentInputSource
Attributs
Implémente

Configuration requise pour Windows

Famille d’appareils
Windows 10 (introduit dans 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduit dans v1.0)

Exemples

Initialisation d’une entrée indépendante.

// 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);

Pour plus d’exemples de code montrant comment utiliser CreateCoreIndependentInputSource et CoreIndependentInputSource, consultez la DrawingPanel définition de classe qui fait partie de l’exemple d’interopérabilité Xaml SwapChainPanel DirectX.

Remarques

Créez un instance de cette classe en appelant SwapChainBackgroundPanel.CreateCoreIndependentInputSource ou SwapChainPanel.CreateCoreIndependentInputSource.

La classe CoreIndependentInputSource permet à une application de gérer l’entrée et le rendu indépendamment du thread d’interface utilisateur XAML, car vous fournissez intentionnellement la logique de traitement d’entrée sur un thread d’arrière-plan. Vous devez appeler CreateCoreIndependentInputSource à partir d’un thread autre que l’interface utilisateur, sinon l’appel de méthode CreateCoreIndependentInputSource échoue.

Historique des versions

Version de Windows Version du SDK Valeur ajoutée
1803 17134 DispatcherQueue

Propriétés

Dispatcher

Obtient le répartiteur d’événements pour la fenêtre.

DispatcherQueue

Obtient le DispatcherQueue associé à ce CoreIndependentInputSource.

HasCapture

Obtient une valeur qui indique si la fenêtre a une capture de pointeur.

IsInputEnabled

Obtient ou définit une valeur qui indique si l’entrée est activée pour l’application UWP.

PointerCursor

Obtient ou définit le curseur de pointeur utilisé par l’application.

PointerPosition

Obtient les coordonnées client du pointeur.

Méthodes

ReleasePointerCapture()

Désactive la capture de pointeur pour l’application UWP.

SetPointerCapture()

Active la capture de pointeurs pour l’application UWP.

Événements

InputEnabled

Se produit lorsque l’entrée est activée ou désactivée pour l’application UWP.

PointerCaptureLost

Se produit lorsqu’un pointeur se déplace vers une autre application UWP. Cet événement est déclenché après PointerExited et est l’événement final reçu par l’application pour ce pointeur.

PointerEntered

Se produit lorsqu’un pointeur se déplace dans le cadre englobant de l’application UWP.

PointerExited

Se produit lorsque le pointeur se déplace en dehors du cadre englobant de l’application UWP.

PointerMoved

Se produit lorsqu’un pointeur se déplace dans le cadre englobant de l’application UWP.

PointerPressed

Se produit lorsque l’utilisateur clique sur un bouton de la souris ou qu’un contact tactile ou de stylet est détecté dans le rectangle englobant de l’application UWP.

PointerReleased

Se produit lorsqu’un bouton de la souris est relâché ou qu’un contact tactile ou stylet est levé dans le rectangle englobant de l’application UWP.

PointerRoutedAway

Se produit sur l’objet d’entrée qui reçoit une entrée de pointeur lorsque le pointeur est redirigé vers un autre objet d’entrée (éventuellement dans un processus distinct).

PointerRoutedReleased

Se produit sur tous les objets d’entrée jamais associés à un pointeur qui déclenche un événement CoreIndependentInputSource.PointerReleased sur un objet d’entrée.

PointerRoutedTo

Se produit lorsque l’entrée de pointeur capturée est précédemment remise à un autre objet, passe à être remise à cet objet.

PointerWheelChanged

Se produit lorsque le bouton de la roulette est pivoté.

S’applique à

Voir aussi