Des boutons a la xp

Soyez le premier à donner votre avis sur cette source.

Vue 4 753 fois - Téléchargée 680 fois

Description

Cette fois ci j'ai trouvé sur le net le moyen d'apporter un peu d'XP dans mes programme et je vous propose de découvrir vous ausii ce source bien sympatique (C'est de l'importation... donc pas de texte en français et malheureusement peu de commentaire désolé j'ai pas eut le temps d'en rajouter.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
A quoi servent les parametre x et y ???

Private Function Hittest(X As Single, Y As Single) As Boolean
Dim pnt As POINT_API
Dim rBox As RECT

GetWindowRect hwnd, rBox 'get the control's rectangle relative to screen
GetCursorPos pnt
'is it over the button?
If PtInRect(rBox, pnt.X, pnt.Y) Then
Hittest = True
Else
If m_bFocused Then m_State xp_Focused Else m_State xp_Normal
End If
End Function
Messages postés
41
Date d'inscription
lundi 23 décembre 2002
Statut
Membre
Dernière intervention
1 mars 2007

Sympha ton contrôle... Une bonne source pleine d'idée...
Messages postés
34
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
29 novembre 2005

10/10
Messages postés
18
Date d'inscription
jeudi 7 juin 2001
Statut
Membre
Dernière intervention
19 avril 2010

Excellent.
Par contre, juste une petite modif dans le controle pour éviter que celui-ci se redessine tant que la souris bouge dessus (effet visuel pas très beau) :

Remplacer l'evennement original MouseMove par celui-ci :

Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
SetCapture hwnd

If Hittest(X, Y) Then
If Button = vbLeftButton And m_bFocused Then
m_State = xp_Pressed
Make_xpButton
Else
If m_State <> xp_Hovered Then
m_State = xp_Hovered
Make_xpButton
End If
End If
RaiseEvent MouseMove(Button, Shift, X, Y)
Else
Make_xpButton
ReleaseCapture
RaiseEvent MouseOut
End If
End Sub

Les modifs sont les suivantes :

Dans la partie ou Hittest(X, Y) est vrai, j'ai rajouté le test If m_State <> xp_Hovered Then qui permet de ne pas repasser dessus si le bouton est déjà en Hovered.
Ensuite la procédure de dessin du bouton Make_xpButton à été déplacée et répétée dans chaque test pour ne l'appeler que si nécessaire.
Messages postés
111
Date d'inscription
dimanche 6 janvier 2002
Statut
Membre
Dernière intervention
27 août 2004

Y a un petit défaut dans la logique de control.
Si le bouton n'a pas le focus.. (cad n'est pas entouré de bleu), l'affichage du bouton pressé n'apparait pas et seul le contour bleu s'installe.
Contrairement au cas où le contour bleu du focus est présent, l'affichage de la pression s'effectue.

Dans XP l'affichage de la pression se fait dans tous les cas..
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.