Как реализовать перетаскивание мышью в Visual Basic? - PullRequest
0 голосов
/ 01 сентября 2008

Мне нужно создать элемент управления quick-n-dirty в Visual Basic 2005 Express, значение которого увеличивается / уменьшается путем «захвата» его мышью и перемещения курсора вверх / вниз. Поскольку сама ручка не двигается, мне нужно отслеживать движение мыши за пределами прямоугольника элемента управления.

Я использую Label с ImageList для реализации этого (у меня есть список из 127 битовых карт, представляющих ручку в различных положениях).

На какие события я должен реагировать?

Ответы [ 2 ]

0 голосов
/ 01 сентября 2008

Ваша проблема будет заключаться в том, чтобы определить, какое растровое изображение вы должны отображать, основываясь на координатах, которые сообщает мышь в событии mouse_move. Вам нужно будет выполнить магию для преобразования координат и найти значение, которое вы можете использовать, чтобы выбрать правильное изображение.

Это не кажется слишком сложным, просто немного проб и ошибок в математике. Skizz уже показал вам, как запечатлеть события.

0 голосов
/ 01 сентября 2008

Вам нужен элемент управления для обработки трех событий: Mouse Down, Mouse Move и Mouse Up. На событии Mouse Down вам нужно будет захватить мышь. Это означает, что сообщения мыши отправляются в элемент управления, который имеет перехват. В случае перемещения мыши, если ввод фиксируется, обновите отображаемое изображение в зависимости от величины перемещения мыши. В событии мыши вверх отпустите захват, если ввод захвачен.

Логическое значение, предложенное jjnguy, не нужно, поскольку свойство Capture элемента управления доступно для чтения, поэтому можно определить, установлен ли захват.

...