CoreIndependentInputSource Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
ApIs de entrada principais do Surfaces para cenários de interoperação.
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
- Herança
- Atributos
- Implementações
Requisitos do Windows
Família de dispositivos |
Windows 10 (introduzida na 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (introduzida na v1.0)
|
Exemplos
Inicializando a entrada independente.
// 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 obter mais código de exemplo de como usar CreateCoreIndependentInputSource e CoreIndependentInputSource, consulte a DrawingPanel
definição de classe que faz parte do exemplo de interoperabilidade XAML SwapChainPanel DirectX.
Comentários
Crie uma instância dessa classe chamando SwapChainBackgroundPanel.CreateCoreIndependentInputSource ou SwapChainPanel.CreateCoreIndependentInputSource.
A classe CoreIndependentInputSource permite que um aplicativo manipule a entrada e a renderização independentemente do thread da interface do usuário XAML, pois você está fornecendo intencionalmente a lógica de processamento de entrada em um thread em segundo plano. Você deve chamar CreateCoreIndependentInputSource de um thread que não seja de interface do usuário, caso contrário, a chamada do método CreateCoreIndependentInputSource falhará.
Histórico de versão
Versão do Windows | Versão do SDK | Valor adicionado |
---|---|---|
1803 | 17134 | DispatcherQueue |
Propriedades
Dispatcher |
Obtém o dispatcher de eventos para a janela. |
DispatcherQueue |
Obtém o DispatcherQueue associado a este CoreIndependentInputSource. |
HasCapture |
Obtém um valor que relata se a janela tem captura de ponteiro. |
IsInputEnabled |
Obtém ou define um valor que indica se a entrada está habilitada para o aplicativo UWP. |
PointerCursor |
Obtém ou define o cursor de ponteiro usado pelo aplicativo. |
PointerPosition |
Obtém as coordenadas do cliente do ponteiro. |
Métodos
ReleasePointerCapture() |
Desabilita a captura de ponteiro para o aplicativo UWP. |
SetPointerCapture() |
Habilita a captura de ponteiro para o aplicativo UWP. |
Eventos
InputEnabled |
Ocorre quando a entrada está habilitada ou desabilitada para o aplicativo UWP. |
PointerCaptureLost |
Ocorre quando um ponteiro se move para outro aplicativo UWP. Esse evento é gerado após PointerExited e é o evento final recebido pelo aplicativo para esse ponteiro. |
PointerEntered |
Ocorre quando um ponteiro se move para a caixa delimitadora do aplicativo UWP. |
PointerExited |
Ocorre quando o ponteiro se move para fora da caixa delimitadora do aplicativo UWP. |
PointerMoved |
Ocorre quando um ponteiro se move dentro da caixa delimitadora do aplicativo UWP. |
PointerPressed |
Ocorre quando um botão do mouse é clicado ou um contato de toque ou caneta é detectado, dentro do retângulo delimitador do aplicativo UWP. |
PointerReleased |
Ocorre quando um botão do mouse é liberado ou um contato de toque ou caneta é levantado, dentro do retângulo delimitador do aplicativo UWP. |
PointerRoutedAway |
Ocorre no objeto de entrada que recebe a entrada do ponteiro quando o ponteiro é redirecionado para outro objeto de entrada (possivelmente em um processo separado). |
PointerRoutedReleased |
Ocorre em todos os objetos de entrada já associados, mas não recebendo entrada no momento, um ponteiro que dispara um evento CoreIndependentInputSource.PointerReleased em um objeto de entrada. |
PointerRoutedTo |
Ocorre quando a entrada de ponteiro capturada anteriormente sendo entregue a outro objeto faz a transição para ser entregue a esse objeto. |
PointerWheelChanged |
Ocorre quando o botão de roda é girado. |