MouseOut

Messages postés
105
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
22 janvier 2009
-
Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012
-
Lut

Voila mon petit blem. J'ai crée un nouveau composant. C'est une sorte de bouton en couleur.

Le bouton change de sytle quand on passe dessus avec la souris. La c'est facile on regarde le mousemove... mais la ou c'est plus pénible c'est pour enlever le sytle au moment ou l'on resort de l'espace du controle.

En C il existe un MouseIn et un MouseOut mais en VB pas que je le sache, ca n'exsite pas... qqun a une idée ?

==============
6Po

DreamersTeam HomePage
[mailto:6po@dreamersteam.org Email]

7 réponses

Messages postés
84
Date d'inscription
jeudi 24 janvier 2002
Statut
Membre
Dernière intervention
4 avril 2006
2
Tu peut toujours enlever le style en redéfinissant le mousemove de la form: dès que tu survolera la form ton style sera réinitialisé
Messages postés
105
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
22 janvier 2009

Oauis c'est ce que je fais pour le moment mais ca c'est la technique pour nulos... bhen exemple type je change le nom du control bhen fo que je me tappe un remplacer pour change clbExit.sytleOut en clbQuit.sytleOut

ca devrait etre directement dans le control... et en plus tu ne passe pas tjs sur une forme c'est mon cas :D
tu peux avoir des frames, des onglets et plein d'autre truc donc ton code bhen c'est plus tres propre à la fin....

Fodrait un truc sur le UserControl

==============
6Po

DreamersTeam HomePage
[mailto:6po@dreamersteam.org Email]
Messages postés
84
Date d'inscription
jeudi 24 janvier 2002
Statut
Membre
Dernière intervention
4 avril 2006
2
Désolé!! mais à part redéfinir les propriétés du contrôle dans le containeur je connais pas d'autres solutions.
Par-contre si tu trouve quelque chose dans ce sens la, ç am'interrese.
Messages postés
105
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
22 janvier 2009

Idem si tu trouves qqch 8-)

==============
6Po

DreamersTeam HomePage
[mailto:6po@dreamersteam.org Email]
Messages postés
78
Date d'inscription
lundi 11 février 2002
Statut
Membre
Dernière intervention
7 février 2006
1
huim tu peu essayer avec les aip getcursorposition ou un truk kom ca... tu regardes si le curseur est dans les limites du controle
Messages postés
105
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
22 janvier 2009

Oauis mais c'est vite lourd ce genre de truc me semble pour un boutton.

==============
6Po

DreamersTeam HomePage
[mailto:6po@dreamersteam.org Email]
Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012

J'étais entrain de chercher ça justement cette nuit
donc vu que je viens de trouver je vous fais partager mes découvertes :

Fais un usercontrol et mets ce code :

Option Explicit

'------- Déclarations d'API -------

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Declare Function GetCapture Lib "user32" () As Long
Private Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long,ByVal yPoint As Long) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long,pRect As RECT) As Long

'------- Déclarations des événements appelés -------

Event MouseLeave()
Event MouseEnter(Button As Integer, Shift As Integer, X As Single, Y As Single)
Event Mousemove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    'Si le curseur a été capturé par le contrôle
    If GetCapture() = UserControl.hwnd Then
        'Variable contenant le rectangle du contrôle
        Dim ControlRect As RECT
        'Définition de la valeur de la variable
        GetWindowRect UserControl.hwnd, ControlRect
        
        'si le pointeur quitte le contrôle
        '(que la fenêtre est différente de celle du contrôle)
        If WindowFromPoint(ControlRect.Left + X, ControlRect.Top + Y) <> UserControl.hwnd Then
            ' on libère la capture et on apelle l'événement de sortie
            RaiseEvent MouseLeave
            Call ReleaseCapture
        Else
            'La souris bouge sur le contrôle, on appelle l'événement "mousemove"
            RaiseEvent Mousemove(Button, Shift, X, Y)
        End If

    Else 
    	' Lorsque la souris entre sur le contrôle, on en fait la capture.
    	' C à d que tous les événement ne seront plus retransmits qu'à ce contrôle.
        RaiseEvent MouseEnter(Button, Shift, X, Y)
        Call SetCapture(UserControl.hwnd)
    End If

End Sub


Il est expliqué et c'est la maniére la plus optimisées que j'ai trouvé .... sans parler du fait que y'à que ça comme methode (les apis) pour générr un tél evenement si vous voulez pas bricoler de trop le code ;)

Bonne prog à tous

.:: aKheNAtHoN ::.
>:) [http://www.myhackerside.fr.st [->www.myhackerside.fr.st<-]] >:)