Modifier les couleurs du contrôle progressbar

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 287 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
Messages postés
29
Date d'inscription
mercredi 16 décembre 2009
Statut
Membre
Dernière intervention
24 août 2012

Bonjour

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

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

Y a t'il un équivalent de ces commandes pour un projet sous VB NET 2008 ? d'avance merci
Messages postés
41
Date d'inscription
mardi 16 septembre 2003
Statut
Membre
Dernière intervention
20 décembre 2009

Au fait.... 10/10 :)
Messages postés
41
Date d'inscription
mardi 16 septembre 2003
Statut
Membre
Dernière intervention
20 décembre 2009

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.