Visual Basic에서 마우스 끌기를 구현하는 방법은 무엇입니까?
-
09-06-2019 - |
문제
Visual Basic 2005 Express에서 Quick-n-dirty 노브 컨트롤을 만들어야 합니다. 이 컨트롤은 마우스로 "잡고" 커서를 위/아래로 움직여 값이 증가/감소합니다.손잡이 자체는 움직이지 않기 때문에 컨트롤의 직사각형 외부에서 마우스 움직임을 계속 추적해야 합니다.
나는 Label
와 ImageList
이를 구현하려면(다양한 위치의 손잡이를 나타내는 127개의 비트맵 목록이 있습니다).
어떤 이벤트에 반응해야 합니까?
해결책
세 가지 이벤트를 처리하려면 컨트롤이 필요합니다.마우스 아래로, 마우스 이동 및 마우스 위로.Mouse Down 이벤트에서는 마우스를 캡처해야 합니다.이는 마우스 메시지가 캡처가 있는 컨트롤로 전송됨을 의미합니다.마우스 이동 이벤트에서 입력이 캡처되면 마우스가 이동한 양에 따라 표시된 이미지를 업데이트합니다.마우스 업 이벤트에서 입력이 캡처되면 캡처를 해제합니다.
부울 jjnguy가 제안하는 것은 Control의 Capture 속성을 읽을 수 있으므로 캡처가 설정되었는지 확인할 수 있으므로 불필요합니다.
다른 팁
문제는 mouse_move 이벤트에서 마우스가 보고하는 좌표를 기반으로 표시해야 하는 비트맵을 결정하는 것입니다.좌표를 변환하고 올바른 이미지를 선택하는 데 사용할 수 있는 값을 찾아내려면 몇 가지 마법을 수행해야 합니다.
너무 복잡하게 들리지는 않습니다. 수학에서 약간의 시행착오가 있을 뿐입니다.Skizz는 이미 이벤트를 캡처하는 방법을 보여주었습니다.