2010-08-13 5 views
0

개체가 움직이지 않는 경우 마우스 오버 이벤트를 생성하는 것이 매우 쉽습니다. 하지만 개체가 50 밀리 초마다 움직이는 문제가 있습니다. 문자열 줄이 아니므로 원을 만들 수 있습니다. 나는 getcursorpos()를 사용했습니다. 오브젝트 x와 y를 얻는 것보다. 다른 문제는 x와 y의 위치 아프이다 p는 말한다이C++ mouseover 이벤트

p X--------------------- 

y 
| 
|  
| 
|  cursor 
| 
| 
| 

입니다. 커서의 위치를 ​​알아내어 일치하지 않는 x와 y와 비교하면 커서가 가운데에 있습니다. 더하기 개체가 계속 이동하므로 추적하기가 어렵습니다. 아이디어가 있으십니까? 죄송합니다. 내가 혼란 스럽다면 더 잘 설명 할 수 없습니다.

화면을받는 POINT 구조에 대한 포인터가 커서

을 조정하지만 그리 때에 있습니다

+0

어떤 프레임 워크를 사용하고 있습니까? –

+0

win32가 당신이 요구하는 것입니까? – Ramilol

+0

GUI 용으로 일반 Win32를 사용하고 있습니까? 추적중인 개체, 사용자 지정 그리기 또는 일부 자식 창은 무엇입니까? 당신이 열심히 당신에게 유용한 제안을하기 위해 무엇을 사용하고 있는지 우리에게 말하지 않는다면. –

답변

2

당신이 GetCursorPos 문서를 따른다면 그것은 말 클라이언트 좌표를 제공하십시오. 이것은 ScreenToClient라는 적절한 함수로 화면 좌표에서 클라이언트 좌표로 변환해야하는 문제입니까?

대신 손으로 커서 위치를 추적하는 대신 이미 클라이언트 좌표를 제공하는 WM_MOUSEMOVE 이벤트를 사용하는 것이 좋습니다.

+0

+1 화면/클라이언트 좌표입니다. 그러나 마우스를 정적으로 유지하고 이클립스를 마우스 위로 옮기면 더 많은 것을 추가해야합니다. – YeenFei

+0

이벤트에 대한 자세한 내용을 찾을 수 없습니다. – Ramilol

+0

@YeenFei WM_MOUSEMOVE를 사용하여 마우스의 마지막 위치를 추적 한 다음 WM_TIMER를 사용하여 원을 이동하고 마지막 커서 위치에 대한 검사를 추가 할 수 있습니다. 원을 닫으십시오. Windows에서는 이벤트 기반 프로그래밍 모델을 사용하므로 시스템에서 제공하는 이벤트 (마우스 이동, 마우스 클릭, 타이머 실행, 단추 클릭 등)의 관점에서 프로그램을 디자인해야합니다. – Ismael

관련 문제