Como implementar o arrastamento do mouse no Visual Basic?
-
09-06-2019 - |
Pergunta
Preciso criar um controle de botão rápido e sujo no Visual Basic 2005 Express, cujo valor é aumentado/diminuído "agarrando-o" com o mouse e movendo o cursor para cima/para baixo.Como o botão em si não se move, preciso acompanhar o movimento do mouse fora do retângulo do controle.
Eu uso um Label
com um ImageList
para implementar isso (tenho uma lista de 127 bitmaps representando o botão em várias posições).
A quais eventos devo reagir?
Solução
Você precisa do controle para lidar com três eventos:Mouse para baixo, mouse para mover e mouse para cima.No evento Mouse Down, você precisará capturar o mouse.Isso significa que as mensagens do mouse são enviadas para o controle que possui a captura.No evento de movimento do mouse, se a entrada for capturada, atualize a imagem exibida dependendo da quantidade de movimento do mouse.No evento mouse up, libere a captura se a entrada for capturada.
O booleano jjnguy sugere ser desnecessário, pois a propriedade Capture de um Control é legível, portanto é possível determinar se a captura foi definida.
Outras dicas
Seu problema será determinar qual bitmap você deve exibir com base nas coordenadas que o mouse relata no evento mouse_move.Você precisará fazer alguma mágica para transformar as coordenadas e chegar a um valor que possa usar para escolher a imagem certa.
Não parece muito complicado, apenas um pouco de tentativa e erro na matemática.Skizz já mostrou como capturar os eventos.