次の方法で共有


CoreIndependentInputSource クラス

定義

相互運用シナリオ用のコア入力 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
継承
Object Platform::Object IInspectable CoreIndependentInputSource
属性
実装

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

ホイール ボタンが回転したときに発生します。

適用対象

こちらもご覧ください