Des boutons a la xp

0/5 (9 avis)

Vue 4 900 fois - Téléchargée 695 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
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
10 nov. 2004 à 13:09
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
Morricon Messages postés 41 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 1 mars 2007
24 oct. 2003 à 17:29
Sympha ton contrôle... Une bonne source pleine d'idée...
cs_Matt Messages postés 34 Date d'inscription lundi 17 décembre 2001 Statut Membre Dernière intervention 29 novembre 2005
20 août 2002 à 19:59
10/10
KrocLeBo Messages postés 18 Date d'inscription jeudi 7 juin 2001 Statut Membre Dernière intervention 19 avril 2010
28 févr. 2002 à 06:48
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.
Skywalker13 Messages postés 111 Date d'inscription dimanche 6 janvier 2002 Statut Membre Dernière intervention 27 août 2004
25 févr. 2002 à 20:49
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.