Problème avec les couleurs

MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 - 25 oct. 2004 à 00:00
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 - 25 oct. 2004 à 11:40
Bonjour tous,
violà j'ai un problème avec ces satanés couleurs.

Par exemple quand je fais une propriété BackColor pour un controle perso, des fois je récupère des valeurs du style
-2 147 483 648
(ce qui correspond à la valeur minimale que l'on peut mettre dans une variable de type long)

Mais j'aimerais pouvoir exploiter cette couleur, par exemple en trouvant son inverse etc... seulement ce n'est pas une couleur que l'ont obtient par exemple avec RGB et je ne sais pas comment l'utiliser. Pour remarque, j'obtient cette valeur avec Me.BackColor sur une nouvelle form, c'est peut-etre une constante de VB pour les couleurs du système, mais moi je ne sais pas y exploiter.

Si quelqu'un pourrait m'aider, ce sera génial. Merci
@ +
MadMatt

5 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
25 oct. 2004 à 01:45
je pense que c'est un numéro de couleur géré par WIndows, ce numéro correspond à une couleur RGB qui peut changer en fonction de l'apparence du bureau.

&H80000000& --> 0 --> vbScrollBars
&H80000001& --> 1 --> vbDesktop
&H80000002& --> 2 --> vbActiveTitleBar
&H80000003& --> 3 --> vbInactiveTitleBar
&H80000004& --> 4 --> vbMenuBar
&H80000005& --> 5 --> vbWindowBackground
&H80000006& --> 6 --> vbWindowFrame
etc...

pour l'utiliser on peut faire

soit par exemple
picture1.BackColor = &H8000000F
ou
picture1.BackColor = vbButtonFace
0
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
25 oct. 2004 à 01:48
Oui mais comment après je fait pour récupérer la valeur de cette couleur, et non pas le numéro que VB lui a attribué ?
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
25 oct. 2004 à 02:03
par exemple avec une Picturebox, à moins qu'il existe une API ?
Un problème va se poser si on change les couleurs du bureau en cours de route.

Dim X As Long
Dim i As Long
Dim C(24) As Long

For i = 0 To 24
X = &H80000000 + i
Picture1.BackColor = X
C(i) = Picture1.Point(0, 0)
Next

après il faut convertir en RGB.
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
25 oct. 2004 à 02:43
j'ai trouvé l'API

Private Declare Function SetSysColors Lib "user32" (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long

Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long

Const COLOR_SCROLLBAR = 0 'The Scrollbar colour
Const COLOR_BACKGROUND = 1 'Colour of the background with no wallpaper
Const COLOR_ACTIVECAPTION = 2 'Caption of Active Window
Const COLOR_INACTIVECAPTION = 3 'Caption of Inactive window
Const COLOR_MENU = 4 'Menu
Const COLOR_WINDOW = 5 'Windows background
Const COLOR_WINDOWFRAME = 6 'Window frame
Const COLOR_MENUTEXT = 7 'Window Text
Const COLOR_WINDOWTEXT = 8 '3D dark shadow (Win95)
Const COLOR_CAPTIONTEXT = 9 'Text in window caption
Const COLOR_ACTIVEBORDER = 10 'Border of active window
Const COLOR_INACTIVEBORDER = 11 'Border of inactive window
Const COLOR_APPWORKSPACE = 12 'Background of MDI desktop
Const COLOR_HIGHLIGHT = 13 'Selected item background
Const COLOR_HIGHLIGHTTEXT = 14 'Selected menu item
Const COLOR_BTNFACE = 15 'Button
Const COLOR_BTNSHADOW = 16 '3D shading of button
Const COLOR_GRAYTEXT = 17 'Grey text, of zero if dithering is used.
Const COLOR_BTNTEXT = 18 'Button text
Const COLOR_INACTIVECAPTIONTEXT = 19 'Text of inactive window
Const COLOR_BTNHIGHLIGHT = 20 '3D highlight of button
Const COLOR_2NDACTIVECAPTION = 27 'Win98 only: 2nd active window color
Const COLOR_2NDINACTIVECAPTION = 28 'Win98 only: 2nd inactive window color

Private Sub Form_Load()
    dim c&
'pour Lire    
    c& = GetSysColor(COLOR_ACTIVECAPTION)
'pour modifier
    c& = SetSysColors(1, COLOR_ACTIVECAPTION, RGB(255, 0, 0))
End Sub
0

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

Posez votre question
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
25 oct. 2004 à 11:40
Excellent, que demander de mieux

merci beaucoup ;)
@ +
MadMatt
0
Rejoignez-nous