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. ポインタが入力されました
  2. PointerPressed
  3. ポインタが移動しました
  4. ポインターリリース
  5. PointerExited

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

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

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

  1. ポインタが入力されました
  2. PointerPressed
  3. ポインタが移動しました
  4. ポインターキャプチャロスト

ルーティングイベント

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

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

  1. ポインタが入力されました
  2. PointerPressed
  3. ポインタが移動しました
  4. PointerRoutedAway
  5. PointerRoutedTo
  6. ポインターリリース
  7. PointerExited

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

  1. ポインタが入力されました
  2. PointerPressed
  3. ポインタが移動しました
  4. PointerRoutedAway
  5. PointerRoutedReleased

Note

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

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

  1. ポインタが入力されました
  2. PointerPressed
  3. PointerRoutedTo
  4. ポインタが移動しました
  5. ポインターリリース
  6. PointerExited

プロパティ

名前 説明
ActivationBehavior

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

Cursor

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

DeviceKinds

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

DispatcherQueue

InputObject の DispatcherQueue を取得します。

(継承元 InputObject)

メソッド

名前 説明
GetForIsland(ContentIsland)

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

GetForVisual(Visual)

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

GetForWindowId(WindowId)

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

RemoveForVisual(Visual)

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

TrySetDeviceKinds(InputPointerSourceDeviceKinds)

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

イベント

名前 説明
DirectManipulationHitTest

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

PointerCaptureLost

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

PointerEntered

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

PointerExited

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

PointerMoved

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

PointerPressed

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

PointerReleased

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

PointerRoutedAway

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

PointerRoutedReleased

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

PointerRoutedTo

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

PointerWheelChanged

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

TouchHitTesting

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

適用対象

こちらもご覧ください