Modifier les couleurs du contrôle progressbar

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 596 fois - Téléchargée 59 fois

Contenu du snippet

Microsoft nous fournit dans son groupe de contrôles COMCTL32.OCX un contrôle nommé ProgressBar. Outil bien intéressant, toutefois, Microsoft a oublié (une fois de plus) de nous fournir la possiblité de changer la couleur de fond ainsi que la couleur des barres pour ce contrôle. Quelle utilité me direz-vous ? Pour ceux qui aiment créer des interfaces autres qu'avec les couleurs du système, il peut être contraignant de devoir se satisfaire de la couleur par défaut du ProgressBar. Imaginez un superbe fond pastel dans votre formulaire avec une ProgressBar aux couleurs austères... Voici la solution pour pallier ce problème:

Source / Exemple :


'*****DECLARATION API SENDMESSAGE*****
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long

'*****CONSTANTES******
Public Const CCM_FIRST = &H2000
Public Const CCM_SETBKCOLOR = (CCM_FIRST + 1)
Public Const PBM_SETBKCOLOR = CCM_SETBKCOLOR
Public Const WM_USER = &H400
Public Const PBM_SETBARCOLOR = (WM_USER + 9)

'*****Utilisation de SendMessage
'*****pour changer la couleur de fond,
'*****dans ce cas-ci en rouge (VbRed)
SendMessage VotreProgressBar.hwnd, PBM_SETBKCOLOR, 0, ByVal vbRed

'*****Utilisation de SendMessage
'*****pour changer la couleur des barres,
'*****dans ce cas-ci en blanc (VbWhite)
SendMessage VotreProgressBar.hwnd, PBM_SETBARCOLOR, 0, ByVal VbWhite

Conclusion :


La fonction API SendMessage nous permet d'envoyer à Windows un message en rapport à un objet.
De cet fait, nous pouvons attribuer des nouvelles valeurs à cet objet. Dans notre cas, nous changeons les valeurs BackColor et BarColor du ProgressBar.

A voir également

Ajouter un commentaire Commentaires
zakariabamou Messages postés 29 Date d'inscription mercredi 16 décembre 2009 Statut Membre Dernière intervention 24 août 2012
15 mai 2010 à 00:21
Bonjour

Y a t'il un équivalent de ces commandes en C# NET 2008 ?
merci d'avance
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
26 oct. 2009 à 09:21
Salut,

"SendMessage" est aussi utilisable en VB.NET.
L'utilisation doit être plus ou moins similaire à VB6.
cs_bidouille007 Messages postés 257 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 22 décembre 2012 1
26 oct. 2009 à 02:31
Bonjour

Y a t'il un équivalent de ces commandes pour un projet sous VB NET 2008 ? d'avance merci
ritchy01 Messages postés 41 Date d'inscription mardi 16 septembre 2003 Statut Membre Dernière intervention 20 décembre 2009
11 août 2006 à 08:01
Au fait.... 10/10 :)
ritchy01 Messages postés 41 Date d'inscription mardi 16 septembre 2003 Statut Membre Dernière intervention 20 décembre 2009
11 août 2006 à 08:00
Rapide, efficace....Merci et bravo !
Afficher les 13 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.