GetPixel RCL_INVALID



  • 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?!



  • Hallo zusammen

    @flenders
    Das hast Du genau richtig verstanden.

    MfG Stephan



  • 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


Anmelden zum Antworten