Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Visual c++, GETPIXEL CLR_INVALID
Forum - C/C++ - Visual c++, GETPIXEL CLR_INVALID

Avatar
bastauncenno (Normal User)
Newbie


Messaggi: 1
Iscritto: 14/10/2009

Segnala al moderatore
Postato alle 14:49
Mercoledì, 14/10/2009
ragazzi le sto provando tutte ma non trovo soluzione ad un problema banale.
in vc++ ho trovato l handle della finestra con findwindow()che ho sul desktop minimizzata e con getpixel non riesco a trovare i colori dei punti.

posto il codice:

--------------------------------
HWND hwnd = FindWindow(NULL, "Guitar Pro");///per catturare la finestra minimizzata nel desktop
//ShowWindow( hwnd, TRUE );...se eseguo questa linea la finestra di guitar pro si apre e si ingrandisce sullo schermo da minimizzata,...quindi l handle con findwindow() viene trovato...perciò si va avanti....

//a questo punto...
HDC hDC = GetDC(hwnd);// prendo HDC dall handle della finestra di guitar pro

COLORREF rSult = GetPixel(hDC, 10, 10);
redValue = GetRValue(rSult);
greenValue = GetGValue(rSult);
blueValue = GetBValue(rSult);
printf("%d,rosso",redValue);
printf("%d,verde",greenValue);
printf("%d,blue",blueValue);

///i valori sono sempre 255 255 255,....

//PERCHE'???


///ammesso che non si trovi una soluzione(improbabile) ,...e che io abbia lo screenshot dello schermo,...,...
///neanche questo mi funziona...

HDC hdc=GetDC(0);//(Global) hWnd is from CreateWindow(...)
//Che valore devo mettere? 0 va bene??

HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, "c:\ciao.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);///punto l immagine dal disco

HDC memDC1=CreateCompatibleDC(hdc);
SelectObject(memDC1,hBitmap);
COLORREF crPixel = GetPixel(memDC1, 100, 100);

///anche qui ricavo sempre 255 255 255...


--------------------

la GETDC mi da un valore espresso in decimale tipo 534266627788,..
ho effettuato un controllo HORZRES E VERTRES,, mi da 1280 800.

Quindi???mi pare che l'handle passato sia giusto no??

Allora perche COLORREF rSult = GetPixel(hDC, 100, 100);  mi DA CRT_INVALID come risultato?
Chiaramente poi se vado a ricavarmi le coordinate i risultati vengono falsati, 255 255 255 delle componenti.
Il problema è nella GETPIXEL MA NON SO COSA SBAGLIO.




/// Perfavore qualcuno può correggere cosa sbaglio??
///PLEASE.

PM Quote