다음을 통해 공유


마우스 메시지 및 시스템 이벤트의 타임라인

지정된 작업이 수행되면 시스템 이벤트(ISG_ 접두사)가 애플리케이션에서 거의 즉시 전송되고 수신됩니다. 마우스 메시지(WM_ 접두사)는 작업이 수행될 때 전송되고 Microsoft Windows 메시징 서비스에서 이벤트를 처리하는 데 걸리는 시간 후에 애플리케이션에서 수신됩니다. 또한 CursorDownCursorUp 은 펜 하드웨어에서 수신되는 펜 이벤트입니다. 태블릿 펜이 화면을 터치하고 화면에서 들어올릴 때 각각 전송됩니다.

펜 이벤트 및 마우스 메시지는 동기화되지 않습니다. 해당 마우스 메시지 및 펜 이벤트가 특정 순서로 발생한다는 보장은 없습니다. 다음 차트는 전송되는 시스템 및 마우스 이벤트의 예상 시퀀스를 보여 줍니다. 차트에서 시스템 제스처 이벤트가 감지되면 마우스 이벤트가 지연됩니다.

펜 입력에 대한 시스템 및 마우스 이벤트의 예상 시퀀스

중요한 구현 고려 사항

마우스 메시지 및 시스템 이벤트에 대해 개발할 때 다음 사항을 고려합니다.

  • 펜 이벤트와 마우스 메시지는 펜 또는 마우스 사용 여부에 관계없이 애플리케이션으로 전송됩니다.
  • 애플리케이션이 펜과 마우스 메시지를 모두 수신 대기하는 경우 메시지의 관계 및 최종 동작을 예측하기가 어렵습니다. 펜 이벤트 및 마우스 메시지는 동기화되지 않습니다. 해당 마우스 메시지 및 펜 이벤트(예: WM_LBUTTONDOWN 및 ISG_TAP 또는 WM_LBUTTONDBLCLK 및 ISG_DBLTAP)가 특정 순서로 발생한다는 보장은 없습니다. 이러한 메시지 간의 관계는 복잡합니다.
  • 동일한 애플리케이션 기능에서 마우스 및 펜 이벤트를 혼합 및 일치시키지 않는 것이 좋습니다. 예를 들어 CursorDownMouseUp 에 응답하는 애플리케이션 기능은 현재 또는 이후 버전의 태블릿 PC SDK에서 예상대로 작동하지 않을 수 있습니다.
  • 이벤트 시퀀스를 통한 보류의 경우 사용자가 시퀀스가 완료되기 전에 태블릿 펜을 끌면 전송되는 이벤트는 왼쪽 끌기에 해당합니다. 예를 들어 끌기가 시작되면 ISG_DRAG 및 WM_LBUTTONDOWN 전송됩니다. 펜이 결국 해제되면 CursorUp 및 WM_LBUTTONUP 전송됩니다. 시스템 제스처 이벤트는 발생 중인 이벤트의 종류를 결정해야 하므로 즉시 실행되지 않을 수 있습니다.
  • 태블릿 펜이 있는 두 번 탭은 마우스로 두 번 클릭하는 것보다 정확도가 낮은 경우가 많습니다. 이것은 태블릿 펜으로 두 번 탭을 수행하는 본질적인 특성에서 비롯됩니다. 사용자가 두 번 탭을 수행하려면 태블릿 펜을 들어 올려야 하므로 탭 사이의 시간은 종종 두 번 클릭 사이의 해당 시간보다 큽니다. 또한, 태블릿 펜의 두 탭은 마우스의 두 번의 클릭보다 더 멀리 떨어져 있는 화면 좌표에서 발생할 가능성이 높습니다. 이를 수용하기 위해 Windows XP Tablet PC Edition에는 두 번 클릭에 대한 마우스 설정과 별개인 두 번 탭의 두 탭 사이의 임시 및 공간 거리에 대한 설정이 있습니다. 이러한 설정은 제어판 태블릿 및 펜 설정에서 조정할 수 있습니다.

이러한 고려 사항 때문에 애플리케이션은 둘 다 아닌 하나의 메시지 집합만 수신 대기해야 합니다. 펜 사용 애플리케이션을 빌드하는 경우 시스템 및 펜 메시지만 수신 대기합니다. 이러한 메시지는 예측 가능하며 태블릿 펜에서 잘 작동합니다. 펜을 사용할 수 없는 애플리케이션을 빌드하는 경우 마우스 메시지만 수신 대기합니다.