Fenêtre choix de couleur

Afficher la fenêtre standard Windows qui propose de choisir une couleur.

ChooseColor

Voir version :

Pas de dépendances

Télécharger :

#include <windows.h>
#include <stdio.h>

int main()
{
    int i,res;
    CHOOSECOLOR  c;
    COLORREF refs[16];
    ZeroMemory (&c, sizeof ( CHOOSECOLOR ) );
    c.lStructSize = sizeof ( CHOOSECOLOR );
    c.lpCustColors = refs;
    res = ChooseColor(&c); 
    printf("Code de sortie : %d\n",res);
    printf("Couleur de sortie : %X\n",c.rgbResult);
    for(i=0;i<16;i++)
        printf("couleur %d personnalisées : %X\n",i,refs[i]);
    return 0;
}



Commentaires


  Une fonction sympa qu'est ChooseColor.
  Doc de la fonction :
  http://msdn2.microsoft.com/en-us/library/ms646912.aspx
  
  Doc de la structure qui va avec :
  http://msdn2.microsoft.com/en-us/library/ms646830.aspx

  ça marche comme d'autres fonctions windows : on remplis une structure, qu'on passe a la fonction

  Pour rentrer dans le vif du sujet, ici, on selectionne des couleurs.
  Les couleurs sont stockées  dans des COLORREF, qui sont des long 
  (des entiers 4 octets (1 octet par couleur, RGB, 4e octet inutilisé))
  
  Codage RGB, avec R en poids faible, puis G, puis B.
  Pour la sortie, j'affiche en Hexa, grace a %X, qui permet de voir les couleurs séparées.
  Je vous laisse regarder la théorie des couleurs dans le chapitre de SDL, 
  ou bien sur mon site "théorie de la programmation image" dans "informatique"

  Ce qui est important, c'est que la couleur que vous allez selectionner est stockée dans c.rgbResult.

  Mais vous pouvez en outre définir des couleurs personnalisées (16 au maximum). 
  Ces couleurs sont écrites via le pointeur c.lpCustColors que vous devez 
  initialiser (si vous le laissez a NULL, ça plante).
  Vous pouvez ainsi récupérer vos 16 couleurs personnalisées.
  
  Si vous avez compris la logique de getopenfilename, tu le reste serait du blabla, 
  alors je m'arrete la, pour en savoir davantage, regardez les liens au dessus.


Laissez un commentaire / post a comment