2011-09-19 5 views
1

C++ 등으로 프로그래밍 GUI에 익숙하지 않은데, 응용 프로그램 창을 이동/드래그 한 후 내 프로그램이 마우스 왼쪽 클릭에 응답하지 않는 문제가 있습니다. 제대로 작동하려면 어떻게해야합니까? 다음은 콜백 함수에서 왼쪽 클릭 메시지를 처리하는 방법입니다.윈도우 이동 후 코디네이트 클릭

case WM_LBUTTONDOWN: 
    { 
     POINT point; 
     GetCursorPos(&point); 
     break; 
    } 
+0

실제로이 문제를 재현하는 우편 번호입니다. –

답변

1

마우스 위치는 메시지에 LPARAM으로 포함되어 있습니다.

MSDN에서 설명 된 바와 같이
POINT point; 
point.x = GET_X_LPARAM(lParam); 
point.y = GET_Y_LPARAM(lParam); 

는 포인트는 클라이언트 영역의 왼쪽 상단 모서리에 상대적이다. 따라서 창을 이동하면 point은 여전히 ​​사용자 창에 상대적입니다.

GetCursorPos은 화면 좌표에서 커서의 위치를 ​​가져옵니다. 따라서 사용 가능한 위치를 얻으려면 화면에서 창의 위치를 ​​보완해야합니다.