comment utiliser cette fonction

comment utiliser cette fonction - C - Programmation

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  :D

Reply

Marsh Posté le 28-03-2007 à 15:35:37   

Reply

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 !  :p  
 
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

Reply

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  

Reply

Marsh Posté le 01-04-2007 à 11:27:50    

anordem a écrit :

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


Reply

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
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

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 :)

Reply

Marsh Posté le 07-04-2007 à 00:42:30    

cpu-fan a écrit :

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 :)


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


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 10-04-2007 à 21:34:40    

superbe !!
ca marche ! :)
merci beaucoup

Reply

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 ?

Reply

Marsh Posté le 12-04-2007 à 20:28:03    

a non c'est bon j'ai trouvé :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed