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

Résolu
jphenixb Messages postés 18 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 15 avril 2014 - 8 août 2006 à 03:30
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 9 août 2006 à 11:32
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

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
9 août 2006 à 01:33
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
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
8 août 2006 à 03:53
pixel = GetPixel(GetDC(0), 278 , 389 );

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

http://programmationdebat.discutforum.com
0
jphenixb Messages postés 18 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 15 avril 2014
8 août 2006 à 04:12
Ca marche pas mieu j'ai rien qui s'affiche dans l'invite de commande ...
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
8 août 2006 à 04:18
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jphenixb Messages postés 18 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 15 avril 2014
8 août 2006 à 04:26
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)
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
8 août 2006 à 10:11
[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
0
jphenixb Messages postés 18 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 15 avril 2014
8 août 2006 à 12:21
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
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
8 août 2006 à 12:47
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
0
trafounet Messages postés 37 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 20 décembre 2006
8 août 2006 à 14:28
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
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
8 août 2006 à 15:36
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
0
trafounet Messages postés 37 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 20 décembre 2006
8 août 2006 à 15:47
effectivement, il faut rajouter la lib gdi32 ds le linker du projet
0
jphenixb Messages postés 18 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 15 avril 2014
8 août 2006 à 19:58
hu? alors la je comprend pas du tout comment fait t'on pour rajouter la librairie gdi32 de le linker ...
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
8 août 2006 à 22:47
Linker: option -lgdi32

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
jphenixb Messages postés 18 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 15 avril 2014
8 août 2006 à 23:49
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
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
8 août 2006 à 23:51
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
0
jphenixb Messages postés 18 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 15 avril 2014
8 août 2006 à 23:55
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)
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
8 août 2006 à 23:57
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
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
9 août 2006 à 00:01
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>
0
jphenixb Messages postés 18 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 15 avril 2014
9 août 2006 à 00:04
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
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
9 août 2006 à 00:05
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
0