문제

나는 레거시 프로젝트를 진행 중입니다. VC++/Win32/MFC.최근에는 응용 프로그램이 다음에서 작동해야 한다는 요구 사항이 되었습니다. 태블릿 PC, 이로 인해 수많은 새로운 문제가 발생했습니다.저는 이러한 문제를 해결하기 위해 노력해 왔으며, 하지만 전문가의 제안을 활용할 수 있는 부분이 하나 남았습니다.

활성 표면에서 스타일러스를 "들어올림"으로 인해 발생하는 특정 버그가 있습니다.기본적으로 마우스 커서는 사라졌다가 다시 화면으로 "누르면" 다시 나타납니다.

이는 응용 프로그램에서 설명되지 않은 것이 합리적입니다.당신은 할 수 없습니다 승강기 데스크탑 PC의 커서.그래서 제가 찾고 있는 것은 리프트가 발생할 때 어떤 일이 발생하는지(Windows 메시지 등의 측면에서) 좋은 개요입니다.이는 초점 변경 및 마우스 오버 이벤트로만 해석됩니까?내 버그에는 커서 변경도 포함된 것 같습니다(리프트와 관련이 없을 수도 있음).확실히 예상치 못한 "리프트"로 인해 애플리케이션의 도구 처리 상태가 중단되고 있습니다.

따라서 실질적인 질문은 다음과 같습니다.

  1. 스타일러스 "리프트"가 발생하면 어떻게 됩니까?언론?
  2. 이를 감지하기 위해 어떤 API 호출을 사용할 수 있습니까?플래그/값이 설정된 표준 메시지로 변환됩니까?
  3. 개발 PC가 데스크톱일 때 이를 테스트/에뮬레이션하는 좋은 방법은 무엇입니까?내가 여기서 장님이 된 걸까요?(태블릿PC는 주기적으로 접속만 합니다)
  4. 태블릿 스타일러스 인식에 대한 올바른 동작이나 모범 사례는 무엇입니까?

고려해 주셔서 감사합니다

도움이 되었습니까?

해결책

태블릿 사용자로서 저는 귀하의 몇 가지 질문에 답변해 드릴 수 있습니다.

첫 번째:

가상 키보드의 키를 누르기 위해 스타일러스가 초점이 맞춰진 창 밖으로 나와야 하는 경우 창에 "키보드 초점"을 쉽게 유지할 수 없습니다.

내가 사용한 대부분의 가상 키보드(Windows 태블릿 입력 패널과 우분투 아래의 키보드)는 입력 중인 프로그램이 "키보드 포커스"를 유지하도록 허용합니다.

스타일러스 "리프트"가 발생하면 어떻게 됩니까?언론?

Windows에서는 압력 값이 떨어지지만 그 외에는 아무런 이벤트가 없습니다.(리눅스는 잘 모르겠습니다.)

이를 감지하기 위해 어떤 API 호출을 사용할 수 있습니까?플래그/값이 설정된 표준 메시지로 변환됩니까?

위에서 언급한 것처럼 압력 값을 얻을 수 있으면 이를 사용할 수 있습니다.

개발 PC가 데스크톱일 때 이를 테스트/에뮬레이션하는 좋은 방법은 무엇입니까?내가 여기서 장님이 된 걸까요?(태블릿PC는 주기적으로 접속만 합니다)

스타일러스를 다른 곳에 놓으면 포인터의 전역 좌표가 변경되므로 전역 포인터 값을 변경할 수 있는 모든 것을 사용하여 갑작스러운 포인터 이동을 에뮬레이트할 수 있습니다.(Java의 Robot 클래스를 사용하면 이 작업이 상당히 쉬워집니다.)

태블릿 스타일러스 인식에 대한 올바른 동작이나 모범 사례는 무엇입니까?

Microsoft가 말하는 내용을 읽어 보시기 바랍니다. MSDN 웹 사이트에는 훌륭한 기사가 많이 있습니다.(http://msdn.microsoft.com/en-us/library/ms704849(VS.85).aspx) 응용 프로그램의 버튼 크기가 큰 차이가 있음을 지적합니다.

이것이 도움이 되었기를 바랍니다.

다른 팁

내가 이해하는 바에 따르면 "리프트" 이벤트는 없습니다. 유일한 이벤트는 나중에 스타일러스를 화면으로 다시 가져올 때 발생합니다.물론 이는 특정 드라이버 등에 따라 다릅니다.

더 나쁜 것은 당신이 설명하는 버그가 일반적인 마우스로도 재현될 수 있다는 것입니다.가능한 한 빨리 마우스를 움직여 보십시오. 거의 확실하게 한 번에 여러 픽셀을 이동할 것입니다.또는 가장 높은 포인터 속도로 마우스 설정을 구성한 경우 수십 또는 수백 개가 될 수도 있습니다.한 번 업데이트하면 마우스가 100,100이 될 수 있습니다.바로 다음 업데이트에서는 200,300이 될 수 있습니다.

Windows에서는 압력 값이 떨어지지만 그 외에는 아무런 이벤트가 없습니다.(리눅스는 잘 모르겠습니다.)

리눅스에서는 "ProximityEvents"를 얻을 수 있습니다

대부분 이러한 이벤트 WT_PROXIMITY는 창에서 사용 가능합니다(다음을 참조하십시오: http://www.wacomeng.com/devsupport/ibmpc/wacomwindevfaq.html )

@Greg - 명확히 말하면 태블릿과 스타일러스가 내장된 노트북 PC입니다.장치에는 전용 키보드가 없으며(터치스크린의 가상 키보드임) wacom 입력 장치가 아닙니다.혼란을 드려 죄송합니다.

다음이 있는 것으로 보입니다. SDK 압력과 같은 특별한 세부 정보를 얻을 수 있는 Microsoft Windows XP Tablet PC Edition의 경우.그러나 기존 비 태블릿 인식 응용 프로그램과 어느 정도 표준 호환성이 있어야 한다는 것을 알고 있습니다.태블릿에 Spy++를 설치하고 특정 메시지/이벤트를 필터링해 볼 수 있을 것 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top