MouseOut

cs_6Po Messages postés 105 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 22 janvier 2009 - 7 nov. 2002 à 10:47
cs_aKheNathOn Messages postés 575 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 23 octobre 2012 - 29 juin 2003 à 23:51
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

cs_rodrigos Messages postés 84 Date d'inscription jeudi 24 janvier 2002 Statut Membre Dernière intervention 4 avril 2006 2
7 nov. 2002 à 10:56
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é
0
cs_6Po Messages postés 105 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 22 janvier 2009
7 nov. 2002 à 11:49
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]
0
cs_rodrigos Messages postés 84 Date d'inscription jeudi 24 janvier 2002 Statut Membre Dernière intervention 4 avril 2006 2
7 nov. 2002 à 14:33
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.
0
cs_6Po Messages postés 105 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 22 janvier 2009
7 nov. 2002 à 16:21
Idem si tu trouves qqch 8-)

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

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Pof Messages postés 78 Date d'inscription lundi 11 février 2002 Statut Membre Dernière intervention 7 février 2006 1
20 nov. 2002 à 15:04
huim tu peu essayer avec les aip getcursorposition ou un truk kom ca... tu regardes si le curseur est dans les limites du controle
0
cs_6Po Messages postés 105 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 22 janvier 2009
20 nov. 2002 à 19:30
Oauis mais c'est vite lourd ce genre de truc me semble pour un boutton.

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

DreamersTeam HomePage
[mailto:6po@dreamersteam.org Email]
0
cs_aKheNathOn Messages postés 575 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 23 octobre 2012
29 juin 2003 à 23:51
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<-]] >:)
0