Domanda

Devo creare un controllo manopola veloce e sporco in Visual Basic 2005 Express, il cui valore viene incrementato/diminuito "afferrandolo" con il mouse e spostando il cursore su/giù.Poiché la manopola stessa non si muove, devo continuare a seguire il movimento del mouse all'esterno del rettangolo del controllo.

Io uso a Label con un ImageList per implementarlo (ho un elenco di 127 bitmap che rappresentano la manopola in varie posizioni).

A quali eventi dovrei reagire?

È stato utile?

Soluzione

È necessario che il controllo gestisca tre eventi:Mouse giù, Muovi mouse e Mouse su.Nell'evento Mouse Down, dovrai catturare il mouse.Ciò significa che i messaggi del mouse vengono inviati al controllo che ha l'acquisizione.Nell'evento di spostamento del mouse, se l'input viene catturato, aggiorna l'immagine visualizzata in base alla quantità di spostamento del mouse.Nell'evento mouse su, rilascia l'acquisizione se l'input viene acquisito.

Il valore booleano jjnguy suggerisce che non è necessario poiché la proprietà Capture di un Control è leggibile, quindi è possibile determinare se la cattura è stata impostata.

Altri suggerimenti

Il tuo problema sarà determinare quale bitmap devi visualizzare in base alle coordinate riportate dal mouse nell'evento mouse_move.Dovrai eseguire qualche magia per trasformare le coordinate e trovare un valore che puoi utilizzare per scegliere l'immagine giusta.

Non sembra troppo complicato, solo un po' di tentativi ed errori in matematica.Skizz ti ha già mostrato come catturare gli eventi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top