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
참고
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) |
InputPointerSource 지정된 ContentIsland에 대한 개체를 검색합니다. |
이벤트
PointerCaptureLost |
이 InputPointerSource 와 접촉하는 포인터가 다른 입력 대상으로 이동할 때 발생합니다. |
PointerEntered |
포인터가 이 InputPointerSource의 범위로 이동할 때 발생합니다. |
PointerExited |
포인터가 이 InputPointerSource의 범위를 벗어나면 발생합니다. |
PointerMoved |
포인터가 이 InputPointerSource의 범위 내에서 이동할 때 발생합니다. |
PointerPressed |
이 InputPointerSource의 범위 내에서 마우스 단추를 누르거나 손가락 또는 펜이 디지타이저 표면과의 접촉을 시작할 때 발생합니다. |
PointerReleased |
이 InputPointerSource의 범위 내에서 이전에 누름 동작을 시작한 포인터 디바이스가 해제(마우스 단추가 놓이거나 터치 또는 펜 접촉이 디지타이저 표면에서 들어올려진 경우) 발생합니다. |
PointerRoutedAway |
포인터가 다른 InputPointerSource 로 리디렉션될 때 발생합니다(별도의 프로세스일 수 있음). |
PointerRoutedReleased |
다른 InputPointerSource 로 라우팅된 포인터가 다른 입력 대상에서 해제될 때 발생합니다. |
PointerRoutedTo |
포인터가 다른 입력 대상에서 이 InputPointerSource 로 라우팅되는 경우에 발생합니다. |
PointerWheelChanged |
마우스 휠이 회전될 때 발생합니다(휠 델타 값이 변경됨). |
적용 대상
추가 정보
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기