GetSysColor/GetSysColorBrush

 

GetSysColor

Cette fonction permet de récupérer les composantes RVB utilisées par Windows pour dessiner les fenêtres, boutons, ou autres. Vous pourrez aussi définir votre pinceau avec la couleur de l'objet correspondant souhaitée.

DWORD WINAPI GetSysColor(int nIndex);

Où en entrée:

nIndex correspond à un index pour un élément. Des constantes existent, les voici:

COLOR_3DDKSHADOW

COLOR_3DFACE

COLOR_3DHIGHLIGHT

COLOR_3DHILIGHT

COLOR_3DLIGHT

COLOR_3DSHADOW

COLOR_ACTIVEBORDER

 

COLOR_ACTIVECAPTION Couleur de la barre de titre si fenêtre active (si effet de couleurs dégradées, indique la couleur la plus à gauche)

COLOR_GRADIENTACTIVECAPTION Couleur de la barre de titre lorsque la fenêtre est active est que l'effet dégradé est positionné

Il faudra utiliser SPI_GETGRADIENTCAPTIONS avec la fonction SystemParametersInfo pour déterminer que l'effet est actif

L'équivalent pour inactif:

COLOR_INACTIVECAPTION

COLOR_GRADIENTINACTIVECAPTION

 

COLOR_APPWORKSPACE

COLOR_BACKGROUND

COLOR_BTNFACE

COLOR_BTNHIGHLIGHT

COLOR_BTNHILIGHT

COLOR_BTNSHADOW

COLOR_BTNTEXT

COLOR_CAPTIONTEXT

COLOR_DESKTOP

COLOR_GRAYTEXT

COLOR_HIGHLIGHT

COLOR_HIGHLIGHTTEXT

COLOR_HOTLIGHT

COLOR_INACTIVEBORDER

COLOR_INACTIVECAPTIONTEXT

COLOR_INFOBK

COLOR_INFOTEXT

COLOR_MENU

COLOR_MENUHILIGHT

COLOR_MENUBAR

COLOR_MENUTEXT

COLOR_SCROLLBAR

COLOR_WINDOW

COLOR_WINDOWFRAME

COLOR_WINDOWTEXT

 

En sortie:

DWORD correspondant aux valeurs des composantes RVG de la couleur. Il sera possible, à l'aide de macros, de récupérer individuellement ces composantes.

Image non trouvée !La valeur en sortie pourra être 0 si l'index demandé n'est pas valide. Voir à utiliser GetSysColorBrush si vous voulez contrôler cette couleur.

 

GetSysColorBrush

Si vous voulez être certain de l'existence d'une couleur (ce qui ne sera pas le cas avec GetSysColor), il sera préférable d'utiliser GetSysColorBrush (nIndex) qui retourne un identifiant sur un pinceau (HBRUSH). Celui-ci sera positionné à NULL si l'index est incorrect.

 

De même, il est préférable de construire un pinceau avec cette fonction GetSysColorBrush, le système évitant une nouvelle allocation de HBRUSH si celui-ci existe déjà dans le cache.