InputPointerSource クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
レポート ポインター入力に登録され、ポインター カーソルと入力イベント処理を提供するオブジェクトを表します。
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
- 継承
- 属性
例
次の例は、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 のポインター イベントは、通常の状況で保証された順序に従います。
- PointerEntered
- PointerPressed
- PointerMoved
- PointerReleased
- PointerExited
ここで PointerMoved は、ポインターが移動するか、マウスのボタンの状態が変化した場合にのみ発生します。 すべてのイベントのポインター ID は同じです。
ポインター キャプチャが失われました
PointerCaptureLost は、インコンタクト ポインターが入力システムによって別の入力ターゲットにルーティングされるときに発生します。 PointerCaptureLost が発生すると、 PointerPressed が受信された後にのみ発生し、そのポインターに対して追加のイベントは発生しません。 具体的には、 PointerReleased と PointerExited は発生しないため、PointerCaptureLost を特定のポインターの有効な終了状態として処理する必要があります。 ポインター キャプチャの消失を含むイベントの有効なシーケンスの例を次に示します。
- PointerEntered
- PointerPressed
- PointerMoved
- PointerCaptureLost
ルーティング イベント
ポインター ルーティング イベントは、インコンタクト ポインターが入力システムによって別の入力ターゲットにルーティングされるときに発生します。 PointerCaptureLost とは異なり、ルーティング イベントは、ポインターが解放される前に、インコンタクト ポインターがルーティングバックされる可能性を提供します。
次に示すのは、インコンタクト ポインターが別のターゲットにルーティングされ、元の InputPointerSource にルーティングされ、リリースされるイベントの有効なシーケンスを示しています。
- PointerEntered
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedTo
- PointerReleased
- PointerExited
連絡先ポインターが別のターゲットにルーティングされ、もう一方のターゲットで解放されるイベントの有効なシーケンスの例を次に示します。
- PointerEntered
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedReleased
Note
PointerRoutedReleased が発生すると、そのポインターに対して追加のイベントは発生しません。 具体的には、 PointerReleased と PointerExited は発生しないため、指定されたポインターの有効な終了状態として PointerRoutedReleased を処理する必要があります。
また、別のターゲットからルーティングされたまったく新しい接触ポインターを受け取ることもできます。 この場合、ポインターが現在の InputPointerSource にまだ表示されていない場合、 PointerEntered イベントと PointerPressed イベントは PointerRoutedTo の前に存在することが保証されます。 この一連のイベントの例を次に示します。
- PointerEntered
- PointerPressed
- PointerRoutedTo
- PointerMoved
- PointerReleased
- 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 |
マウス ホイールが回転したときに発生します (ホイールの差分値が変化します)。 |