GetPixel RCL_INVALID
-
Was sagt denn dein Debugger?
- Ist Handle gültig? (springt er überhaupt in die if-Verzweigung?)
- Ist dc gültig? (liefert GetPixel vielleicht deshalb Müll?)
-
Hallo zusammen
Also das Handle ist gültige (ungleich NULL).
Ich vermute, daß das dc aus gültig ist, da es auch ungleich NULL ist.Das erste if wird durchlaufen, jedoch das zweite nicht.
MfG Stephan
-
Hallo zusammen
Hat den keiner mehr eine Idee?
Verwende BCB6.0 Pro unter W2K bzw XP Pro.MfG Stephan
-
Habe ich das richtig verstanden, dass nach
HDC dc = GetWindowDC(Handle);dc ungleich NULL ist, aber
RGBColor = GetPixel(dc, 1, 1);trotzdem CLR_INVALID zurückliefert?!
-
-
hi. mal eine zwischenfrage. ist CLR_INVALID nicht das selbe wie RGB(255, 255, 255) also weiß?
-
Hallo zusammen
@zwischenfrage
Habe keine Ahnung ob dies so ist, habe allerdings nichts weisses in meinem Formular.MfG Stephan
-
Stephan schrieb:
Habe keine Ahnung ob dies so ist, habe allerdings nichts weisses in meinem Formular.
Habe das gerade mal mit 1/1 getestet, und dort ist aufgrund des "3D-Rahmens" tatsächlich weiß - allerdings geht er bei mir auch dann in if(RGBColor != CLR_INVALID) hinein

-
Hallo zusammen
@flenders
Ok, das mit dem 3D Rahmen ist nachvollziehbar, jedoch ich kann eingeben was für Koordinaten ich will, und bekomme dann immer Weiß.MfG Stephan
-
Dann scheint dein Fehler wo anders zu liegen, denn bei mir funktioniert der Code

-
Hallo.
Konnte es auch nicht glauben das dein Code nicht funktioniert. Ich musste dann aber feststellen das ich es auch nicht hinkriege.
#include <windows.h> int main() { HWND hWnd = FindWindow(NULL, "Form1"); if(hWnd == NULL) { MessageBox(NULL, "Kein Fenster gefunden!", NULL, MB_OK); return 0; } HDC hDC = GetWindowDC(hWnd); if(hDC == NULL) { MessageBox(NULL, "Fehler bei GetWindowDC", NULL, MB_OK); return 0; } COLORREF color = GetPixel(hDC, 1, 1); if(color == CLR_INVALID) { MessageBox(NULL, "Fehler bei GetPixel", NULL, MB_OK); return 0; } }Bei mir endet das immer in "Fehler bei GetPixel".

-
Ah doch, funktioniert. Das Fenster darf nur nicht verdeckt sein.
-
Ich hab die Logik dahinter aber noch nicht verstanden. Es kommt irgendwie immer darauf an wo das Fenster ist. Wenn ich es zu weit nach unten positioniere (Taskleiste) dann kommt der Fehler bei GetPixel, obwohl sagen wir mal 100 Pixel in der Höhe zu sehen sind. Schiebe ich es etwas weiter rauf, funktioniert es wieder.
Hat bestimmt was mit dieser Clipping Region zu tun.
-
Ach sorry das ich hier soviel scheisse schreibe.

Ich hatte aus versehen statt x = 1 und y = 1 gerade x = 100 und y = 100 ausprobiert. Also vergeßt den letzten Beitrag.
-
Hallo zusammen
@*freu*
Erst mal vielen Dank für die Infos.
Mein Fenster war immer im Hintergrund, da ich mir die Werte immer im Debugger angeschaut habe, und einen Breakpoint auf if(Handle) gesetzt hatte.Wenn ich mir jetzt die Werte auf einem Label anzeigen lassen, dann sind sie plausibel.
Also vielen Dank an alle für eure Hilfe.
MfG Stephan