InputPointerSource クラス

定義

レポート ポインター入力に登録され、ポインター カーソルと入力イベント処理を提供するオブジェクトを表します。

public ref class InputPointerSource sealed : InputObject
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Foundation.WindowsAppSDKContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class InputPointerSource final : InputObject
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.WindowsAppSDKContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class InputPointerSource : InputObject
Public NotInheritable Class InputPointerSource
Inherits InputObject
継承
Object Platform::Object IInspectable InputObject InputPointerSource
属性

次の例は、CreateCoreIndependentInputSource を使用して SwapChainPanel を構成し、DispatcherQueueController を介してバックグラウンド スレッドで待機時間の短いペンとタッチ入力を受け取る方法を示しています。

void SetupBackgroundPenInput(SwapChainPanel swapChainPanel)
{
    m_dispatcherQueueController = DispatcherQueueController::CreateOnDedicatedThread();

    m_dispatcherQueueController.DispatcherQueue().TryEnqueue([this] {

        InputPointerSourceDeviceKinds deviceKind = (InputPointerSourceDeviceKinds)(
            Microsoft::UI::Input::InputPointerSourceDeviceKinds::Touch |
            Microsoft::UI::Input::InputPointerSourceDeviceKinds::Pen);
        m_coreInput = swapChainPanel().CreateCoreIndependentInputSource(deviceKind);

        m_coreInput.PointerMoved({ this, &DirectXPage::SwapChainPanel_OnPointerMoved });
        });
}


void DirectXPage::SwapChainPanel_OnPointerPressed(InputPointerSource const& sender, Microsoft::UI::Input::PointerEventArgs const& e)
{
    // When the pointer is pressed begin tracking the pointer movement.
    m_main->StartTracking();
}

この例では、SwapChainPanel の上にカーソルが置かれたときに表示されるシステム ハンド カーソル イメージを構成する方法を示します。

InputPointerSourceDeviceKinds deviceKind = (InputPointerSourceDeviceKinds)(
    Microsoft::UI::Input::InputPointerSourceDeviceKinds::Touch |
    Microsoft::UI::Input::InputPointerSourceDeviceKinds::Mouse |
    Microsoft::UI::Input::InputPointerSourceDeviceKinds::Pen);
m_coreInput = swapChainPanel().CreateCoreIndependentInputSource(deviceKind);

m_coreInput.InputCursor = InputSystemCursor.Create(InputSystemCursorShape.Hand);

注釈

ポインター イベントの座標空間は、 SwapChainPanel オブジェクトと同じ座標空間内にあります。

イベントの順序

通常のケース

InputPointerSource のポインター イベントは、通常の状況で保証された順序に従います。

  1. PointerEntered
  2. PointerPressed
  3. PointerMoved
  4. PointerReleased
  5. PointerExited

ここで PointerMoved は、ポインターが移動するか、マウスのボタンの状態が変化した場合にのみ発生します。 すべてのイベントのポインター ID は同じです。

ポインター キャプチャが失われました

PointerCaptureLost は、インコンタクト ポインターが入力システムによって別の入力ターゲットにルーティングされるときに発生します。 PointerCaptureLost が発生すると、 PointerPressed が受信された後にのみ発生し、そのポインターに対して追加のイベントは発生しません。 具体的には、 PointerReleasedPointerExited は発生しないため、PointerCaptureLost を特定のポインターの有効な終了状態として処理する必要があります。 ポインター キャプチャの消失を含むイベントの有効なシーケンスの例を次に示します。

  1. PointerEntered
  2. PointerPressed
  3. PointerMoved
  4. PointerCaptureLost

ルーティング イベント

ポインター ルーティング イベントは、インコンタクト ポインターが入力システムによって別の入力ターゲットにルーティングされるときに発生します。 PointerCaptureLost とは異なり、ルーティング イベントは、ポインターが解放される前に、インコンタクト ポインターがルーティングバックされる可能性を提供します。

次に示すのは、インコンタクト ポインターが別のターゲットにルーティングされ、元の InputPointerSource にルーティングされ、リリースされるイベントの有効なシーケンスを示しています。

  1. PointerEntered
  2. PointerPressed
  3. PointerMoved
  4. PointerRoutedAway
  5. PointerRoutedTo
  6. PointerReleased
  7. PointerExited

連絡先ポインターが別のターゲットにルーティングされ、もう一方のターゲットで解放されるイベントの有効なシーケンスの例を次に示します。

  1. PointerEntered
  2. PointerPressed
  3. PointerMoved
  4. PointerRoutedAway
  5. PointerRoutedReleased

Note

PointerRoutedReleased が発生すると、そのポインターに対して追加のイベントは発生しません。 具体的には、 PointerReleasedPointerExited は発生しないため、指定されたポインターの有効な終了状態として PointerRoutedReleased を処理する必要があります。

また、別のターゲットからルーティングされたまったく新しい接触ポインターを受け取ることもできます。 この場合、ポインターが現在の InputPointerSource にまだ表示されていない場合、 PointerEntered イベントと PointerPressed イベントは PointerRoutedTo の前に存在することが保証されます。 この一連のイベントの例を次に示します。

  1. PointerEntered
  2. PointerPressed
  3. PointerRoutedTo
  4. PointerMoved
  5. PointerReleased
  6. PointerExited

プロパティ

Cursor

この InputPointerSource の入力ターゲット (Visual または WindowId (HWND) の上にマウスポインターまたはペン ポインターがある場合に表示されるカーソルを取得または設定します。

DeviceKinds

この InputPointerSource でサポートされているデバイスの種類を取得します。

DispatcherQueue

InputObject の DispatcherQueue を取得します。

(継承元 InputObject)

メソッド

GetForIsland(ContentIsland)

指定した InputPointerSourceContentIsland のオブジェクトを取得します。

イベント

PointerCaptureLost

この InputPointerSource に接触しているポインターが別の入力ターゲットに移動したときに発生します。

PointerEntered

ポインターがこの InputPointerSource の境界内に移動したときに発生します。

PointerExited

ポインターがこの InputPointerSource の境界から移動したときに発生します。

PointerMoved

この InputPointerSource の境界内でポインターが移動したときに発生します。

PointerPressed

この InputPointerSource の境界内で、マウス ボタンが押されたとき、または指またはペンがデジタイザーサーフェスとの接触を開始したときに発生します。

PointerReleased

この InputPointerSource の境界内で、以前に Press アクションを開始したポインター デバイスが離されたとき (マウス ボタンが離された場合、またはタッチまたはペンの接触がデジタイザーサーフェスから離された場合) に発生します。

PointerRoutedAway

ポインターが別の InputPointerSource (場合によっては別のプロセス内) にリダイレクトされるときに発生します。

PointerRoutedReleased

別の InputPointerSource にルーティングされた s ポインターがその他の入力ターゲットで解放されたときに発生します。

PointerRoutedTo

ポインターが別の入力ターゲットからこの InputPointerSource にルーティングされるときに発生します。

PointerWheelChanged

マウス ホイールが回転したときに発生します (ホイールの差分値が変化します)。

適用対象

こちらもご覧ください