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 のポインター イベントは、通常の状況では保証された順序に従います。
- ポインタが入力されました
- PointerPressed
- ポインタが移動しました
- ポインターリリース
- PointerExited
ポインターが移動するか、マウスのボタンの状態が変化した場合にのみ PointerMoved が発生します。 すべてのイベントは同じポインター ID を持っています。
ポインター キャプチャが失われました
PointerCaptureLost は、インコンタクト ポインターが入力システムによって別の入力ターゲットにルーティングされるときに発生します。 PointerCaptureLost が発生すると、 PointerPressed が受信された後にのみ発生し、そのポインターに対して追加のイベントは発生しません。 具体的には、 PointerReleased と PointerExited は発生しないため、指定されたポインターの有効な終了状態として PointerCaptureLost を処理する必要があります。 ポインター キャプチャの損失を含むイベントの有効なシーケンスの例を次に示します。
- ポインタが入力されました
- PointerPressed
- ポインタが移動しました
- ポインターキャプチャロスト
ルーティングイベント
ポインター ルーティング イベントは、インコンタクト ポインターが入力システムによって別の入力ターゲットにルーティングされるときに発生します。 PointerCaptureLost とは異なり、ルーティング イベントは、ポインターが解放される前に、インコンタクト ポインターが再びルーティングされる可能性を提供します。
次に示すのは、インコンタクト ポインターが別のターゲットにルーティングされ、元の InputPointerSource にルーティングされてから解放されるイベントの有効なシーケンスを示しています。
- ポインタが入力されました
- PointerPressed
- ポインタが移動しました
- PointerRoutedAway
- PointerRoutedTo
- ポインターリリース
- PointerExited
インコンタクト ポインターが別のターゲットにルーティングされ、もう一方のターゲットで解放される、有効な一連のイベントの例を次に示します。
- ポインタが入力されました
- PointerPressed
- ポインタが移動しました
- PointerRoutedAway
- PointerRoutedReleased
Note
PointerRoutedReleased が発生した場合、そのポインターに対して追加のイベントは発生しません。 具体的には、 PointerReleased と PointerExited は発生しないため、指定されたポインターの有効な終了状態として PointerRoutedReleased を処理する必要があります。
別のターゲットからルーティングされたまったく新しいインコンタクト ポインターを受け取ることもできます。 この場合、ポインターが現在の InputPointerSource でまだ認識されていない場合、 PointerEntered イベントと PointerPressed イベントは PointerRoutedTo の前に存在することが保証されます。 この一連のイベントの例を次に示します。
- ポインタが入力されました
- PointerPressed
- PointerRoutedTo
- ポインタが移動しました
- ポインターリリース
- PointerExited
プロパティ
| 名前 | 説明 |
|---|---|
| ActivationBehavior |
レポート ポインター入力に登録され、ポインター カーソルと入力イベント処理を提供するオブジェクトを表します。 |
| Cursor |
この InputPointerSource の入力ターゲット (Visual または WindowId (HWND) の上にマウスポインターまたはペン ポインターがある場合に表示されるカーソルを取得または設定します。 |
| DeviceKinds |
この InputPointerSource でサポートされているデバイスの種類を取得します。 |
| DispatcherQueue |
InputObject の DispatcherQueue を取得します。 (継承元 InputObject) |
メソッド
| 名前 | 説明 |
|---|---|
| GetForIsland(ContentIsland) |
指定した ContentIsland の InputPointerSource オブジェクトを取得します。 |
| 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 |
レポート ポインター入力に登録され、ポインター カーソルと入力イベント処理を提供するオブジェクトを表します。 |