CoreIndependentInputSource クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
相互運用シナリオ用のコア入力 API を表示します。
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
- 継承
- 属性
- 実装
Windows の要件
デバイス ファミリ |
Windows 10 (10.0.10240.0 で導入)
|
API contract |
Windows.Foundation.UniversalApiContract (v1.0 で導入)
|
例
独立した入力を初期化しています。
// 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);
CreateCoreIndependentInputSource と CoreIndependentInputSource を使用する方法のコード例については、XAML SwapChainPanel DirectX 相互運用サンプルの一部であるクラス定義を参照してくださいDrawingPanel
。
注釈
SwapChainBackgroundPanel.CreateCoreIndependentInputSource または SwapChainPanel.CreateCoreIndependentInputSource を呼び出して、このクラスのインスタンスを作成します。
CoreIndependentInputSource クラスを使用すると、バックグラウンド スレッドで入力処理ロジックを意図的に提供しているため、アプリは XAML UI スレッドとは無関係に入力とレンダリングを処理できます。 UI 以外のスレッドから CreateCoreIndependentInputSource を呼び出す必要があります。そうしないと、 CreateCoreIndependentInputSource メソッドの呼び出しは失敗します。
バージョン履歴
Windows のバージョン | SDK バージョン | 追加された値 |
---|---|---|
1803 | 17134 | DispatcherQueue |
プロパティ
Dispatcher |
ウィンドウのイベント ディスパッチャーを取得します。 |
DispatcherQueue |
この CoreIndependentInputSource に関連付けられている DispatcherQueue を取得します。 |
HasCapture |
ウィンドウにポインター キャプチャがあるかどうかを報告する値を取得します。 |
IsInputEnabled |
UWP アプリに対して入力が有効かどうかを示す値を取得または設定します。 |
PointerCursor |
アプリで使用されるポインター カーソルを取得または設定します。 |
PointerPosition |
ポインターのクライアント座標を取得します。 |
メソッド
ReleasePointerCapture() |
UWP アプリのポインター キャプチャを無効にします。 |
SetPointerCapture() |
UWP アプリのポインター キャプチャを有効にします。 |
イベント
InputEnabled |
UWP アプリの入力が有効または無効になっている場合に発生します。 |
PointerCaptureLost |
ポインターが別の UWP アプリに移動したときに発生します。 このイベントは PointerExited の後に発生し、このポインターに対してアプリによって受信される最終的なイベントです。 |
PointerEntered |
ポインターが UWP アプリの境界ボックスに移動したときに発生します。 |
PointerExited |
ポインターが UWP アプリの境界ボックスの外に移動したときに発生します。 |
PointerMoved |
UWP アプリの境界ボックス内でポインターが移動したときに発生します。 |
PointerPressed |
UWP アプリの外接する四角形内でマウス ボタンがクリックされたとき、またはタッチまたはペンの接触が検出されたときに発生します。 |
PointerReleased |
UWP アプリの外接する四角形内でマウス ボタンが離された場合、またはタッチまたはペンの接触が持ち上げられたときに発生します。 |
PointerRoutedAway |
ポインターが別の入力オブジェクト (場合によっては別のプロセスで) にリダイレクトされるときに、ポインター入力を受け取る入力オブジェクトで発生します。 |
PointerRoutedReleased |
入力オブジェクトに対して CoreIndependentInputSource.PointerReleased イベントを発生するポインターに関連付けられたが、現在入力を受信していないすべての入力オブジェクトで発生します。 |
PointerRoutedTo |
キャプチャされたポインター入力が以前に別のオブジェクトに配信され、このオブジェクトに配信されるに遷移したときに発生します。 |
PointerWheelChanged |
ホイール ボタンが回転したときに発生します。 |