comment utiliser cette fonction - C - Programmation
Marsh Posté le 29-03-2007 à 12:40:44
Salut.
Quand on utilise l'Api Win32, il est toujours utile de posséder le SDK qui contient la MSDN et la signification de toutes les fonctions et structures.
Ensuite, quant on récupère un bout de code quelque part, il est préférable de le comprendre avant de l'utiliser.
Voilà pour la morale !
Pour répondre à ta question, GetPixel renvoit une valeur de type COLORREF, c'est à dire unsigned long, de la forme : 0x00bbggrr.
Tu peux accéder aux différentes composantes à l'aide des macros GetRValue, GetGValue, et GetBValue.
Tout est défini dans windows.h mais tu devras peut être ajouter Gdi32.lib (libgdi32.a) au linker.
http://msdn2.microsoft.com/en-us/library/ms532655.aspx
Marsh Posté le 31-03-2007 à 20:17:36
salut
voila j'ai éssayer d'utiliser la fonction mais j'y arrive pas
j'éssaye d'aficher COLORREF grace a un printf mais ca ne compile pas
voici mon code :
#include <stdio.h>
#include <stdlib.h>
#include <windows.h> // GDI spécifique windows
int main(int argc, char *argv[])
{
long COLORREF = 5;
long *pColor = &COLORREF;
GetScreenColor(5,5,pColor); // On envoie pointeur (l'adresse de nombre) à la fonction
printf("%ld",COLORREF );
system("PAUSE" );
return 0;
}
BOOL GetScreenColor(int x,int y,COLORREF * pColor)
{
BOOL bResult = FALSE; // Echec par défaut
HDC hScreen = CreateDC(TEXT("DISPLAY" ),NULL,NULL,NULL);
if (pColor && hScreen)
{
// tout est ok
*pColor = GetPixel(hScreen,x,y);
bResult = TRUE;
}
if (hScreen)
{
// Détruire le DC
DeleteDC(hScreen);
}
return bResult;
}
j'ai ces erreur de compilation :
[Linker error] undefined reference to `CreateDCA@16'
[Linker error] undefined reference to `GetPixel@12'
[Linker error] undefined reference to `DeleteDC@4'
ld returned 1 exit status
Marsh Posté le 01-04-2007 à 11:27:50
anordem a écrit : Salut. |
Marsh Posté le 02-04-2007 à 17:10:14
anordem a écrit : Tout est défini dans windows.h |
Déclaré...
http://mapage.noos.fr/emdel/notes.htm#definitions
Marsh Posté le 06-04-2007 à 20:26:31
tu devras peut être ajouter Gdi32.lib (libgdi32.a) au linker.
slp tu peux m'expliquer comment on fait ? (je suis sous dev c++)
merci
Marsh Posté le 07-04-2007 à 00:42:30
cpu-fan a écrit : tu devras peut être ajouter Gdi32.lib (libgdi32.a) au linker. |
wxDev-C++ (très proche de dev-C++ qui est obsolète)
Outils > Options du Compilateur > Ajouter ces commandes lors de l'appel de l'éditeur de lien :
-lgdi32
valider...
Marsh Posté le 11-04-2007 à 22:09:55
eu juste encore une question
comment on récupére les 3 valeur rgb avec Get"Value ?
Marsh Posté le 28-03-2007 à 15:35:37
bonjour
voila sur un forum on m'a donner cette fonction :
#include <windows.h> // GDI spécifique windows
// Note pas de contrôle de x et y, si les coordonnées ne sont pas valide le résultat est indéfini.
// pColor doit pointer sur un COLORREF valide
BOOL GetScreenColor(int x,int y,COLORREF * pColor)
{
BOOL bResult = FALSE; // Echec par défaut
// Créer un device context sur l'écran
HDC hScreen = CreateDC(TEXT("DISPLAY" ),NULL,NULL,NULL);
if (pColor && hScreen)
{
// tout est ok
*pColor = GetPixel(hScreen,x,y);
bResult = TRUE;
}
if (hScreen)
{
// Détruire le DC
DeleteDC(hScreen);
}
return bResult;
}
c'est pour , en envoiyen les coordoné d'un pixel , en récupérer la couleur
seulement je ne sai pas du tout comment récuperer les 3 teinte (rgb)
esque quelqun pourrai m'aider , sachan que le programme est en mode console et que je veu afficher les 3 teinte avec un printf
de plus , cette conction utilise l'API Win32 , et je ne sai pas quelle fichier inclure a mon programme (dll ? , manip a faire sous dev c++ )
voila merci