CoreIndependentInputSource Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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é. |