문제

Visual Basic 2005 Express에서 Quick-n-dirty 노브 컨트롤을 만들어야 합니다. 이 컨트롤은 마우스로 "잡고" 커서를 위/아래로 움직여 값이 증가/감소합니다.손잡이 자체는 움직이지 않기 때문에 컨트롤의 직사각형 외부에서 마우스 움직임을 계속 추적해야 합니다.

나는 LabelImageList 이를 구현하려면(다양한 위치의 손잡이를 나타내는 127개의 비트맵 목록이 있습니다).

어떤 이벤트에 반응해야 합니까?

도움이 되었습니까?

해결책

세 가지 이벤트를 처리하려면 컨트롤이 필요합니다.마우스 아래로, 마우스 이동 및 마우스 위로.Mouse Down 이벤트에서는 마우스를 캡처해야 합니다.이는 마우스 메시지가 캡처가 있는 컨트롤로 전송됨을 의미합니다.마우스 이동 이벤트에서 입력이 캡처되면 마우스가 이동한 양에 따라 표시된 이미지를 업데이트합니다.마우스 업 이벤트에서 입력이 캡처되면 캡처를 해제합니다.

부울 jjnguy가 제안하는 것은 Control의 Capture 속성을 읽을 수 있으므로 캡처가 설정되었는지 확인할 수 있으므로 불필요합니다.

다른 팁

문제는 mouse_move 이벤트에서 마우스가 보고하는 좌표를 기반으로 표시해야 하는 비트맵을 결정하는 것입니다.좌표를 변환하고 올바른 이미지를 선택하는 데 사용할 수 있는 값을 찾아내려면 몇 가지 마법을 수행해야 합니다.

너무 복잡하게 들리지는 않습니다. 수학에서 약간의 시행착오가 있을 뿐입니다.Skizz는 이미 이벤트를 캡처하는 방법을 보여주었습니다.

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