CoreIndependentInputSource Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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. |