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.
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.