WM_MOUSEMOVE 메시지를 캡처하여 내 창의 커서 움직임을 감지 할 수 있습니다. 이 메시지에는 x 및 y 좌표가 포함되어 있지만 사용자가 마우스를 가로 또는 세로로 이동하려고했는지 여부를 파악할 필요가 있습니다. x 좌표가 y보다 크게 변경되면 수직 이동을 무시하고 싶습니다. 다른 메시지를 사용해야합니까? 감사!마우스가 수평으로 움직 였는지 여부 확인 (C++)
답변
데이빗 (David)이 맞습니다. 상태를 계속 추적해야 할 것 같습니다. 그러나 마우스의 최대 64 이전 좌표를 제공하는 함수, GetMouseMovePointsEx이 있습니다. 좌표를 저장하기 위해서는지도 (또는 다른 데이터 구조)가 있어야하지만,이 함수는 많은 도움이됩니다. 그리고 다시, 나는 그 방법이 더 수동 방법과 비교하여 얼마나 큰지를 알지 못한다. 어디에서 마우스가 시작 되었는가? * (아래 편집 참조)
일단 이전 좌표가 있으면 시작 위치를 최신 위치와 비교할 수 있습니다. 차이가 임의의 양 (결정한 것)보다 큰 경우 코드를 실행하십시오.
* 편집 : 그냥 내가 역사를 마우스 좌표에
위의 점에 대한 GetMouseMovePointsEx 기능 검색을 링크
GetMouseMovePointsEx
문서에이 글을 읽을. 함수가 포인트를 찾으면 마지막 포인트 인 nBufPoints를 으로 반환합니다.응용 프로그램에서 타임 스탬프를 제공하는 경우 GetMouseMovePointsEx 함수는이를 사용하여 이 다른 시간에 기록 된 두 개의 동일한 점을 구별합니다.
응용 프로그램은 WM_MOUSEMOVE 메시지에서받은 마우스 좌표를 사용하여이 함수를 호출하고 화면 좌표로 변환해야합니다.
+1이 기능에 대해 전혀 알지 못했습니다. 여기가 유용 할 것 같네요. –
모자, 나는 마지막 마우스 이벤트가 생성 된 이후 "움직임의 양"을 추적하는 것으로 보이는 MOUSEINPUT 구조체를보고 있습니다. 꽤 복잡해 보입니다. :) – IgorAtman
@IgorAtman, 제 편집 참조. MOUSEINPUT도보고 있습니다. 궁극적으로 어느 솔루션이 더 간단한 지 확실하지 않습니다. 나는 때때로 이러한 것들은 광범위한 기능을 가지고 있기 때문에 때때로 더 복잡해 보임을 알고있다. 때로는 사용 가능한 기능 중 단 하나만 사용하는 것은 꽤 간단하다. – caps
- 1. 마우스가 5 초 동안 움직 였는지 감지하는 기능
- 2. 키보드가 얼마나 멀리 움직 였는지 탐지합니다.
- 3. 플렉스 3 : 클릭/홀드가 시작된 후 마우스가 얼마나 멀리 움직 였는지 측정하는 방법?
- 4. 마우스가 움직 인 후에 트리거하는 WPF 이벤트
- 5. 알림 확인 여부 확인
- 6. 컨트롤을 수평으로 이동
- 7. 손 추적 여부 확인
- 8. 사용자 이름 확인 여부 확인
- 9. 스크롤 막대 확인 여부 확인
- 10. 사용자 이름 확인 여부 확인
- 11. C++ VS2010 릴리스 또는 디버그 여부 확인
- 12. C++ ODBC 연결 성공 여부 확인
- 13. 삽입 성공 여부 확인 (MongoDB C# 드라이버)
- 14. objective c 블루투스 가용성 변경 여부 확인
- 15. 파일 열기 여부 확인
- 16. 단어가 명사인지 여부 확인
- 17. startScan 성공 여부 확인
- 18. 레코드 존재 여부 확인
- 19. UIWebView로드 여부 확인
- 20. .txt 파일로드 여부 확인
- 21. dll이 있는지 여부 확인
- 22. _tmkdir 성공 여부 확인
- 23. iPhone 4 여부 확인
- 24. 숫자가 소수인지 여부 확인
- 25. MFMailComposeViewController 누름 여부 확인
- 26. 패치 적용 여부 확인
- 27. URL 존재 여부 확인
- 28. FBSession, 로그인 여부 확인?
- 29. Struts 존재 여부 확인
- 30. 외부 링크 여부 확인
Windows에 특정 태그가 다시 붙습니다. C++은 마우스에 상관하지 않습니다. C++은 마우스가 있는지를 모릅니다. –
마지막 mousemove 이벤트를 추적하여 두 이벤트를 비교할 수 있어야합니다. 그리고 당신은 당신이 의미하는 바를 "더 많이"더 분명하게해야합니다. 컴퓨터에 실제 번호를 제공 할 수 있어야합니다. –