undefined reference to GetPixel



  • Guten Abend,

    ich möchte grade ein Programm schreiben, in dem ich GetPixel benutzen möchte.
    Vorweg, ich benutze Code::Blocks. Mein Code sieht so aus

    #include <windows.h>
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        HWND myWindowHandler;
        myWindowHandler = FindWindow (NULL, "FensterTitel");
        ShowWindow(myWindowHandler, SW_RESTORE);
        SetForegroundWindow(myWindowHandler);
        Sleep(500);
        SetFocus(myWindowHandler);
        HDC myDisplayCanvas;
        myDisplayCanvas = GetDC(myWindowHandler);
        COLORREF color = GetPixel(myDisplayCanvas, 780, 545);
        if ( (GetRValue(color) == 255) and (GetGValue(color) == 255) and
     (GetBValue(color) == 225) )
        {
            std::cout << "Geht!";
        }
    }
    

    Das Programm soll also ein Fenster finden, es anzeigen und an den Koordinaten X = 780 Y = 545 die Farbe ermitteln. Ist RGB = 225,225,225 soll das Programm schreiben "Geht!".
    Fehlermeldung sieht folgt aus :

    undefined reference to `_GetPixel@12'
    Build finished: 1 errors, 0 warnings

    Bitte schreibt mir jetzt nicht ich soll etwas anderes verwenden, sondern eine Lösung zu der Funktion GetPixel().

    Mit freundlichen Grüßen : FreakY



  • Libs gelinkt?



  • Es sollte eig. ohne eine Library funktionieren.

    Edit:
    Falls es anders nicht gehen sollte, schreibt mir nun doch ne andere Möglichkeit. Wenns geht aber bitte nichts, bei dem ich mir großartig was runterladen muss. Es soll mir jetzt grade nur eine Kleinigkeit abnehmen und soll nicht zu einem größeren Projekt führen o.a.



  • Habt ihr nichts womit man die Farbe einer Stelle auslesen kann ? ...



  • Du benutzt Windows Funktionen. Klar brauchst du eine Library dazu. Aber wenn du den Header hast, wirst du nur noch die libs eintragen müssen.

    Probiers mal mit dieser:
    winmm.lib

    EDIT:
    Sorry diese hier: Gdi32.lib

    Noch ein Edit:
    Hier kannst du alles selbst nachschauen:
    http://msdn.microsoft.com/en-us/library/dd144909(VS.85).aspx



  • Okay danke, werds mir mal anschauen.



  • Ok habs immer noch nicht so ganz hinbekommen. Kann mir also jemand irgendwas empfehlen, womit ich die Farbwerte eines Pixels ermitteln kann ? Vielleicht eine Funktion, eine Library oder sonst was. Ich hab es zwar mit GetPixel versucht und ihr habt auch gesehen das ich es versucht habe, es aber nicht hinbekomme. Vielleicht hat auch jemand ein Code zu bieten den ich gleich benutzen kann.

    so far...



  • Hier ein fertiges Programm:

    http://me.germangamedev.de/?page=projects&id=colpi

    Da den Code raussuchen darfst du selbst.



  • Vielen Dank !



  • Der Code sieht gut und vernünftig aus, allerdings ein wenig, so scheint mir, fehlerhaft. Mein Code::Blocks hat an 2 Stellen des Code etwas zu meckern, denn der Syntax ist wohl nicht ganz richtig.

    window_class.hbrBackground  = static_cast<::HBRUSH>(::GetStockObject (WHITE_BRUSH));
    

    und

    ::DefWindowProc (handle, WM_SYSCOMMAND, static_cast<::WPARAM>(id), MAKELPARAM (x, y));
    

    Dazu folgende Fehlermeldungen :

    In member function long unsigned int main::initialise(HINSTANCE__*, HINSTANCE__*, TCHAR*, int)': expected<' before '[' token
    expected identifier before '[' token
    expected >' before '[' token expected(' before '[' token
    expected primary-expression before '[' token
    expected primary-expression before ':' token
    expected ]' before ':' token expected)' before ':' token
    expected `;' before ':' token

    und

    In member function void main::on\_system\_command(HWND__*, UINT, int, int)': expected<' before '[' token
    expected identifier before '[' token
    expected >' before '[' token expected(' before '[' token
    expected primary-expression before '[' token
    expected primary-expression before ':' token
    expected ]' before ':' token expected)' before ':' token

    === Build finished: 17 errors, 0 warnings ===



  • Es war auch nicht die Idee, dass du das jetzt einfach kopierst, sondern suchst, wo das auslesen passiert und dann die Funktionen bei dir einpasst. Das der Quellcode fehlerhaft ist bezweile ich jetzt. Vlt. stimmt was mit deinen Einstellungen nicht..



  • Ich habe nicht kopiert, sondern versucht den Source-Code zu kompilieren.


Anmelden zum Antworten