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 設定
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 只有在指標移動或按鈕狀態在滑鼠變更時才會引發。 所有事件都有相同的指標標識碼。
指標擷取遺失
當連絡指標路由傳送至輸入系統的不同輸入目標時,會引發pointerCaptureLost。 引發 PointerCaptureLost 時,只有在收到 pointerPressed
- PointerEntered
- PointerPressed
- PointerMoved
- PointerCaptureLost
路由事件
當連絡內指標由輸入系統路由至不同的輸入目標時,就會引發指標路由事件。 與 PointerCaptureLost 不同,路由事件提供在放開指標之前,連絡內指標傳回的可能性。
以下顯示有效的事件序列,其中連絡指標會路由傳送至不同的目標、路由回原始 InputPointerSource,然後釋放:
- PointerEntered
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedTo
- PointerReleased
- PointerExited
以下是有效的事件序列範例,其中連絡指標會路由傳送至不同的目標,然後在另一個目標上釋放:
- PointerEntered
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedReleased
注意
引發 PointerRoutedReleased 時,不會針對該指標引發任何其他事件。 具體來說,PointerReleased 和 PointerExited 不會引發,因此您應該處理 PointerRoutedReleased 為指定指標的有效結束狀態。
您也可以接收從不同目標路由傳送的全新連絡內指標。 在此情況下,如果目前 InputPointerSource 尚未看到指標,PointerEntered 和 PointerPressed 事件都保證在 PointerRoutedTo 之前。 以下是此事件序列的範例:
- PointerEntered
- PointerPressed
- PointerRoutedTo
- PointerMoved
- PointerReleased
- PointerExited
屬性
Cursor |
取得或設定當滑鼠或手寫筆指標位於輸入目標上方時所顯示的數據指標、Visual 或 WindowId (HWND),這個 InputPointerSource。 |
DeviceKinds |
取得這個 InputPointerSource支援的裝置類型。 |
DispatcherQueue |
取得 InputObject 的 DispatcherQueue。 (繼承來源 InputObject) |
方法
GetForIsland(ContentIsland) |
擷取指定之 ContentIsland之 |
事件
PointerCaptureLost |
發生於與這個 InputPointerSource 接觸的指標 移至另一個輸入目標時。 |
PointerEntered |
當指標移至這個 InputPointerSource界限時發生。 |
PointerExited |
發生於指標移出這個 InputPointerSource界限時。 |
PointerMoved |
當指標在這個 InputPointerSource的範圍內移動時發生。 |
PointerPressed |
發生於按下滑鼠按鈕,或手指或手寫筆起始與數位板表面的接觸,而在這個 InputPointerSource的範圍內。 |
PointerReleased |
發生於先前起始 Press 動作的指標裝置放開時(放開滑鼠按鈕,或從數位板表面抬起觸控或手寫筆接觸),而在此 InputPointerSource的範圍內。 |
PointerRoutedAway |
當指標重新導向至另一個 InputPointerSource 時發生(可能在不同的進程中)。 |
PointerRoutedReleased |
當路由傳送至其他輸入目標的 InputPointerSource 不同的 |
PointerRoutedTo |
當指標從不同的輸入目標路由傳送至此 InputPointerSource 時發生。 |
PointerWheelChanged |
發生於滑鼠滾輪旋轉時(滾輪差異值變更)。 |