Pas de dépendances
#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; }
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.