djtef
Messages postés16Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention 5 juillet 2007
-
9 févr. 2006 à 13:43
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 2009
-
9 févr. 2006 à 16:46
Je cherche à récupérer les coordonnées et la couleur du pixel pointé par la souris, dans une simple console dos, sous Dev C++, mais j'ai les 2 messages d'erreur :
cannot convert `HWND__*' to `HDC__*' in assignment
cannot convert `HDC__*' to `HWND__*' for argument `1' to `HDC__*
int main (int argc, char *argv[])
{
// Déclarations locales
HDC hand;
POINT pt;
COLORREF Pix;
int R,G,B;
int y,x;
// Actions
do{
GetCursorPos(&pt);
hand = WindowFromPoint(pt); //<--------------1ere erreur
x = pt.x;
y = pt.y;
Pix = GetPixel(GetDC(hand), x, y);//<-----------2e erreur
R = GetRValue(Pix);//->valeur du rouge (0-255)
G = GetGValue(Pix);//->valeur du vert (0-255)
B = GetBValue(Pix);//->valeur du bleu (0-255)
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 20092 9 févr. 2006 à 15:11
Tu fais : Projet -> Options du Projet -> Paramètres -> Editeur
de liens et voilà tu cherches le fichier libgdi32.a dans le dossier lib
de DevC++
if(!Meilleur("Joky")) return ERREUR;<
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 20092 9 févr. 2006 à 16:46
Forcément, GetDC(hand) sur le bureau, te renvoi un Device Contexte,
"une zone où l'on peut dessiner", sur tout le bureau, donc l'origine
0,0 est en haut à gauche
Si tu utilise sur une fenetre, le Device Contexte sera exclusivement
sur la zone ou se trouve ta fenêtre, donc l'origine 0, 0 sera en haut à
gauche, mais de ta fenêtre, c'est pour ça qu'il existe une fonction
ClientToScreen(...);
et inversement ScreenToClient(...);
qui pour la première converti les coordonnées d'une zone client, en coordonnée "écran"
djtef
Messages postés16Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention 5 juillet 2007 9 févr. 2006 à 15:02
Avec Dev c++ je ne vois pas du tout comment on fait, je suis allé dans
"options du compilateur", puis sinon j'ai fait une recherche dans tous
les dossier de gdi32.lib et je ne trouve rien. Peut-être qu'avec ce
compilateur ça ne marche pas ainsi ?
djtef
Messages postés16Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention 5 juillet 2007 9 févr. 2006 à 16:25
Le programme me donne bien la couleur du pixel pointé par la souris
quand je suis sur le bureau, mais quand j'ouvre une fenêtre, ça
correspond pas, j'ai l'impression que c'est décalé, ça me donne la
valeur du pixel environ 5 cm en dessous. Je pense que le problème vient
du fait que les coordonnées du pixel lui même par rapport à l'écran, ne
sont pas les même que celle de la fenêtre ou change pour une handle
donnée, c'est à dire quand je fais Pix = GetPixel(GetDC(hand), x, y),
on dirait que ça ne prend pas la même origine que quand je fais
GetCursorPos(&pt);