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
- 상속
- 특성
예제
다음 예제에서는 CreateCoreIndependentInputSourceSwapChainPanel 구성하고 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 수신된 후에만
- PointerEntered
- PointerPressed
- PointerMoved
- PointerCaptureLost
라우트된 이벤트
포인터 라우트된 이벤트는 입력 시스템에 의해 연락처 내 포인터가 다른 입력 대상으로 라우팅될 때 발생합니다. PointerCaptureLost와 달리 라우트된 이벤트는 포인터가 해제되기 전에 연락처 내 포인터가 다시 라우팅될 가능성을 제공합니다.
다음은 연락처 내 포인터가 다른 대상으로 라우팅되고 원래 InputPointerSource로 다시 라우팅된 다음 해제되는 유효한 이벤트 시퀀스를 보여 줍니다.
- PointerEntered
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedTo
- PointerReleased
- PointerExited
다음은 연락처 내 포인터가 다른 대상으로 라우팅된 다음 다른 대상에서 해제되는 유효한 이벤트 시퀀스의 예입니다.
- PointerEntered
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedReleased
메모
PointerRoutedReleased가 발생하면 해당 포인터에 대한 추가 이벤트가 발생하지 않습니다. 특히 pointerReleased 및
다른 대상에서 라우팅된 새로운 연락처 내 포인터를 수신할 수도 있습니다. 이 경우 포인터가 현재 InputPointerSource에서 아직 보이지 않으면 PointerEntered 및 PointerPressed 이벤트가 PointerRoutedTo 선행되도록 보장됩니다. 다음은 이 이벤트 시퀀스의 예입니다.
- PointerEntered
- PointerPressed
- PointerRoutedTo
- PointerMoved
- PointerReleased
- PointerExited
속성
Cursor |
이 InputPointerSource입력 대상, Visual 또는 WindowId(HWND) 위에 마우스 또는 펜 포인터가 있을 때 표시되는 커서를 가져오거나 설정합니다. |
DeviceKinds |
이 InputPointerSource지원하는 디바이스 유형을 가져옵니다. |
DispatcherQueue |
InputObject에 대한 DispatcherQueue 가져옵니다. (다음에서 상속됨 InputObject) |
메서드
GetForIsland(ContentIsland) |
지정된 ContentIsland대한 InputPointerSource 개체를 검색합니다. |
이벤트
PointerCaptureLost | |
PointerEntered |
포인터가 이 InputPointerSource범위로 이동할 때 발생합니다. |
PointerExited |
포인터가 이 InputPointerSource범위를 벗어나면 발생합니다. |
PointerMoved |
포인터가 이 InputPointerSource범위 내에서 이동할 때 발생합니다. |
PointerPressed |
이 InputPointerSource의 범위 내에 있는 동안 마우스 단추를 누르거나 손가락이나 펜이 디지타이저 화면과 접촉할 때발생합니다. |
PointerReleased | |
PointerRoutedAway |
포인터가 다른 InputPointerSource 리디렉션될 때 발생합니다(별도의 프로세스일 수 있음). |
PointerRoutedReleased |
다른 InputPointerSource 라우팅된 포인터가 다른 입력 대상에서 해제될 때 발생합니다. |
PointerRoutedTo |
포인터가 다른 입력 대상에서 이 InputPointerSource 라우팅될 때 발생합니다. |
PointerWheelChanged |
마우스 휠을 회전할 때 발생합니다(휠 델타 값이 변경됨). |