Comment renvoyer la valeur hexadecimal d'un pixel de l'écran? (debutant) [Résolu]

Signaler
Messages postés
18
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
15 avril 2014
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Bonjours, je cherche a pointer sur un pixel particulier apres avoir fait un print screen puis renvoyer la valleur de ce pixel sur l'écran.
Malheureusement pour moi je n'est aucune erreur de detecter tout est bien compiler mais il ne fait pas ce que j'aimerai qu'il fasse...

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

int main()
{    long pixel 0;                                                              // 0x00000000>0x00FFFFFF
    pixel = GetPixel(GetWindowDC(0), 278 , 389 );       // On prend la couleur du pixel aux coordonné 278,389 afficher à l'écran et on le met dans la variable pixel
    printf ("RGB=%x\n",pixel);                                      // On affiche en hexadecimal la valeur RGB du pixel dans la consol
    getchar();                                                                    
    return(0);
}

Pour l'instant mon prog ne fait absolument rien du tout et je suis unpeu triste de mon resulta malgrés ma journée à essayer de faire en sorte que cela marche.
Merci a tout ceux qui je l'espere reponderons pou rm'aiguiller...

30 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Bon ben c'est clair que c'est la configuration le problème. Essais de COMPLETEMENT désintaller DevCPP. Ensuite, si il reste encore des répertoire ou fichier, supprime complètement le dossier Dev-Cpp puis réinstalle tout. On sais jamais.

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
pixel = GetPixel(GetDC(0), 278 , 389 );

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution

http://programmationdebat.discutforum.com
Messages postés
18
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
15 avril 2014

Ca marche pas mieu j'ai rien qui s'affiche dans l'invite de commande ...
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
int main(int argc, char *argv[])

    DWORD pixel = 0;
    pixel = GetPixel(GetDC(0), 800 , 600 );
    printf ("RGB=0x%x\n",pixel);
    system("pause");
    return 0;
}

Ça fonctionne parfaitement moi.
C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution

http://programmationdebat.discutforum.com
Messages postés
18
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
15 avril 2014

ben marde alors ...
moi il me renvoie rien du tout j'ai le droit a : "appuyer sur une touche pour continuer..." pour votre version
et a rien du tt pour la mienne même pas une invite de commande qui s'ouvre ...

est ce que ca peu venir du compilateur qui fait mal son boulo ? (j'ai devc++ tournant sur windows XP)
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
[auteurdetail.aspx?ID=617077 SAKingdom]
> Normalement il faut libérer le HDC avec ReleaseDC



int main(int argc, char *argv[])
{
    HDC hdc = GetDC(0);
    printf ("RGB=0x%x\n",GetPixel(hdc, 800 , 600 ));
    ReleaseDC(0, hdc);
    system("pause");
    return 0;
}

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
18
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
15 avril 2014

ca marche toujours pas mais que ca marche avec vaux compilateur et pas le mien me laisse a penser que c'est devc++ qui est vraiement et n'accepte pas les fonction windows.h.
car lorsque j'essaye
#include <stdio.h>
int main()
{
printf("coucou %d",9);
getchar();
}

j'ai bien le "coucou 9" qui s'affiche dans l'"invite de commande"
mais des que j'essaye de faire apparaitre la valeur de la couleur en hexadecimal j'ai meme pas l'invite de commende qui s'ouvre...

(petite question subsidiaire quel compilateur utilisez vous?
evidement il y en a plein qui sont presenter dans le forum mais appart devc++ j'arrive à en faire fonctionner aucun...)

En vous remerkillant de votre aide passé et futur
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Bien sur que Dev-C++ (en fait gcc, Dev-C++ n'est pas un compilateur mais un IDE) accepte les fonctions Win32
La compilation réussit ou pas?

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
37
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
20 décembre 2006

jphenixb-> j'ai essayer sous dev-c++ et j'ai le meme problème que toi...
le printf n'affiche rien du tout c'est bizarre

essaye de faire un nouveau projet win32 GUI avec

case WM_CREATE:
        {
        HDC hdc = GetDC(0);
        char txt[40];
        wsprintf(txt,"RGB=0x%x",GetPixel(hdc, 278 , 389 ));
 hStatic=CreateWindowEx(0,"static",txt,WS_VISIBLE|WS_CHILD,100,100,100,100,hwnd,0,0,0);
        ReleaseDC(0, hdc);  
        break;
        }

chez moi ca marche
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
vecchio>>T'as vue l'heure à laquelle j'avais écrit ça ? :)

Bon, j'ai testé sous DevCPP avec la lib gdi32:


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


int main ()
{
    HDC hDC = GetDC(0);
    DWORD pixel;
   
    pixel = GetPixel(hDC, 800, 600);
   
    printf("0x%x\n", pixel);
   
    system("PAUSE");
   
    ReleaseDC(0, hDC);
   
    return 0;
}

Encore une fois, ça fonctionne très bien.


C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution



http://programmationdebat.discutforum.com
Messages postés
37
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
20 décembre 2006

effectivement, il faut rajouter la lib gdi32 ds le linker du projet
Messages postés
18
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
15 avril 2014

hu? alors la je comprend pas du tout comment fait t'on pour rajouter la librairie gdi32 de le linker ...
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Linker: option -lgdi32

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
18
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
15 avril 2014

pardon mais je suis sous devc++
et je ne vois vraiment pas comment on rajoute cette librairie ni ou on la trouve si elle est deja presnete des l'installation de devc++ ou si on doit la telechager.

j'ai trouver ca mais si je met -lgbi32 a cette endroit j'ai une erreure lors de la compil je doit vous avouez que ej suis totalement perdu...

http://kaiser-edouard.developpez.com/tutoriels/allegro/partie1/images/dynamic_dev.jpg
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
C'est bien là (dans Editeur de Liens=linker en anglais) mais c'est -lgdi32 et pas -lgbi32
Cette lib est fourie avec le compilo, donc c'est bon, tu met ca à la suite de -lalleg

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
18
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
15 avril 2014

lors de la compilation il me dit: "cannot find -lgdi32" donc a mon avis cette lib n'est pas fournisavec ou elle doit etre autre par (X-files le retour)
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
C'est une option du linker, l'éventuelle erreur doit donc arriver à
l'édition de liens, et non à la compilation. pour etre sur que tu as la
lib, va voir dans ton dossier lib si tu trouves un fichier nommé
libgdi32.a

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Bon je vais bien expliquer.


Va dans le menu Projet->Options du projet puis dans l'onglet Paramètre. À droite complètement tu as "Éditeur de lien". Entre
-lgdi32 dans la fenêtre et clique sur Ok et compile.


C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation
< body>
Messages postés
18
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
15 avril 2014

merci de pas avoir petey un cable XD...
j'ai copier toute la lib d'un autre compilateur (turboC) pcq il n'y en avai aucune.
maintenant j'ai une nouvelle erreur ...

                                               Cannot find -lobjc
                                               ld returned 1 exit status
 C:\Dev-Cpp\Makefile.win      [Build Error]  [Project1.exe] Error 1

un dernier petit effot svp XD
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Télécharge la dernière version de DevCPP et réinstalle là. C'est impossible qu'il n'y ai pas gdi32.

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation