共用方式為


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 只有在指標移動或按鈕狀態在滑鼠變更時才會引發。 所有事件都有相同的指標標識碼。

指標擷取遺失

當連絡指標路由傳送至輸入系統的不同輸入目標時,會引發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

注意

引發 PointerRoutedReleased 時,不會針對該指標引發任何其他事件。 具體來說,PointerReleasedPointerExited 不會引發,因此您應該處理 PointerRoutedReleased 為指定指標的有效結束狀態。

您也可以接收從不同目標路由傳送的全新連絡內指標。 在此情況下,如果目前 InputPointerSource 尚未看到指標,PointerEnteredPointerPressed 事件都保證在 PointerRoutedTo 之前。 以下是此事件序列的範例:

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

屬性

Cursor

取得或設定當滑鼠或手寫筆指標位於輸入目標上方時所顯示的數據指標、VisualWindowId (HWND),這個 InputPointerSource

DeviceKinds

取得這個 InputPointerSource支援的裝置類型。

DispatcherQueue

取得 InputObject 的 DispatcherQueue

(繼承來源 InputObject)

方法

GetForIsland(ContentIsland)

擷取指定之 ContentIsland之 InputPointerSource 物件。

事件

PointerCaptureLost

發生於與這個 InputPointerSource 接觸的指標 移至另一個輸入目標時。

PointerEntered

當指標移至這個 InputPointerSource界限時發生。

PointerExited

發生於指標移出這個 InputPointerSource界限時。

PointerMoved

當指標在這個 InputPointerSource的範圍內移動時發生。

PointerPressed

發生於按下滑鼠按鈕,或手指或手寫筆起始與數位板表面的接觸,而在這個 InputPointerSource的範圍內。

PointerReleased

發生於先前起始 Press 動作的指標裝置放開時(放開滑鼠按鈕,或從數位板表面抬起觸控或手寫筆接觸),而在此 InputPointerSource的範圍內。

PointerRoutedAway

當指標重新導向至另一個 InputPointerSource 時發生(可能在不同的進程中)。

PointerRoutedReleased

當路由傳送至其他輸入目標的 InputPointerSource 不同的 指標時發生。

PointerRoutedTo

當指標從不同的輸入目標路由傳送至此 InputPointerSource 時發生。

PointerWheelChanged

發生於滑鼠滾輪旋轉時(滾輪差異值變更)。

適用於

另請參閱