VB6 PictureBox Mouseover
-
07-07-2019 - |
Question
J'utilise un PictureBox VB6 sur mon contrôle utilisateur. J'ai défini l'image de la PictureBox, le style BorderStyle sur 0 et le paramètre BackColor sur BackColor du contrôle utilisateur. L'idée est que je veux un "flottant" icône. Cependant, je veux que cette icône apparaisse cliquable lorsque la souris le survole.
Deux questions:
-
Quels événements dois-je utiliser? MouseMove semble être le plus proche d'un & Mouse; MouseOver " un événement. Existe-t-il des alternatives plus propres?
-
Comment devrais-je changer le style? J'ai essayé plusieurs solutions, mais aucune d'entre elles ne semble correcte.
La solution
-
MouseMove est l’événement correct dans VB6. Vous devrez faire quelques efforts pour détecter manuellement lorsque la souris quitte la zone client proprement. (Mes expériences dans ce monde, il y a de nombreuses années, ont toujours révélé que mettre en œuvre ce comportement était délicat.)
-
Pour changer le style, je vous recommande d'utiliser GDI pour: (a) décaler l'image d'un pixel vers le haut et vers la gauche; (b) tracez une seule ligne de pixel dans ButtonHighlightColor le long des bords supérieur et gauche; et (c) tracez une seule ligne de pixel dans ButtonShadowColor le long des bords inférieur et droit. C’est plus compliqué que ça en a l'air, en particulier dans VB6, donc je recommanderais finalement ...
Regardez les commandes de la barre d'outils de vbAccelerator . Ils sont gratuits et ils vous mèneront probablement là où vous le souhaitez. (Et oui, ils sont "classiques", c'est-à-dire VB6.)