Compartir a través de


CoreIndependentInputSource Clase

Definición

Surfaces core input API para escenarios de interoperación.

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
Herencia
Object Platform::Object IInspectable CoreIndependentInputSource
Atributos
Implementaciones

Requisitos de Windows

Familia de dispositivos
Windows 10 (se introdujo en la versión 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)

Ejemplos

Inicialización de la entrada independiente.

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

Para obtener más código de ejemplo de cómo usar CreateCoreIndependentInputSource y CoreIndependentInputSource, consulta la DrawingPanel definición de clase que forma parte del ejemplo de interoperabilidad de DirectX swapChainPanel xaml.

Comentarios

Cree una instancia de esta clase llamando a SwapChainBackgroundPanel.CreateCoreIndependentInputSource o SwapChainPanel.CreateCoreIndependentInputSource.

La clase CoreIndependentInputSource permite a una aplicación controlar la entrada y la representación independientemente del subproceso de interfaz de usuario XAML, ya que proporcionas intencionadamente la lógica de procesamiento de entrada en un subproceso en segundo plano. Debe llamar a CreateCoreIndependentInputSource desde un subproceso que no sea de interfaz de usuario; de lo contrario, se producirá un error en la llamada al método CreateCoreIndependentInputSource .

Historial de versiones

Versión de Windows Versión del SDK Valor agregado
1803 17134 DispatcherQueue

Propiedades

Dispatcher

Obtiene el distribuidor de eventos de la ventana.

DispatcherQueue

Obtiene el dispatcherQueue asociado a este coreIndependentInputSource.

HasCapture

Obtiene un valor que informa de si la ventana tiene captura de puntero.

IsInputEnabled

Obtiene o establece un valor que indica si la entrada está habilitada para la aplicación para UWP.

PointerCursor

Obtiene o establece el cursor de puntero usado por la aplicación.

PointerPosition

Obtiene las coordenadas de cliente del puntero.

Métodos

ReleasePointerCapture()

Deshabilita la captura de puntero para la aplicación para UWP.

SetPointerCapture()

Habilita la captura de puntero para la aplicación para UWP.

Eventos

InputEnabled

Se produce cuando la entrada está habilitada o deshabilitada para la aplicación para UWP.

PointerCaptureLost

Se produce cuando un puntero se mueve a otra aplicación para UWP. Este evento se genera después de PointerExited y es el evento final recibido por la aplicación para este puntero.

PointerEntered

Se produce cuando un puntero se mueve al cuadro de límite de la aplicación para UWP.

PointerExited

Se produce cuando el puntero se mueve fuera del rectángulo de selección de la aplicación para UWP.

PointerMoved

Se produce cuando un puntero se mueve dentro del cuadro de límite de la aplicación para UWP.

PointerPressed

Se produce cuando se hace clic en un botón del mouse, o se detecta un contacto táctil o de lápiz, dentro del rectángulo delimitador de la aplicación para UWP.

PointerReleased

Se produce cuando se suelta un botón del mouse o se levanta un contacto táctil o de lápiz, dentro del rectángulo delimitador de la aplicación para UWP.

PointerRoutedAway

Se produce en el objeto de entrada que recibe la entrada del puntero cuando el puntero se redirige a otro objeto de entrada (posiblemente en un proceso independiente).

PointerRoutedReleased

Se produce en todos los objetos de entrada asociados a un evento CoreIndependentInputSource.PointerReleased en un objeto de entrada, pero que actualmente no recibe la entrada.

PointerRoutedTo

Se produce cuando la entrada de puntero capturada se entregó anteriormente a otro objeto, pasa a entregarse a este objeto.

PointerWheelChanged

Se produce cuando se gira el botón de rueda.

Se aplica a

Consulte también