Tutorialproblem ==> WinAPI-Unterschied bezüglich Dev-C++



  • Ich habe mal eines der vorzüglichen Tutorials von http://www.c-plusplus.net angetan. Alles ist soweit klar.
    Aber es gibt ein Problem mit der Syntax. Vermutlich liegt das daran das dass Tutorials mit VC++ geschrieben wurde und wie ich weiß gibt es zwischen jedem Compiler gewisse Unterschiede.

    Nun, der bisherige Code ist folgender:

    #include <windows.h>
    
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); 
    //Deklaration der Windows-Nachrichten-Prozedur
    
    int WINAPI WinMain (HINSTANCE hI, HINSTANCE hPrI, PSTR szCmdLine, int iCmdShow)
    {
    char szName[] = "Fensterklasse";
    WNDCLASS wc;
    
    wc.style         = CS_HREDRAW | CS_VREDRAW;   // CS = "class style"
    wc.lpfnWndProc   = WndProc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hI;
    wc.hIcon         = LoadIcon (NULL, IDI_WINLOGO);
    wc.hCursor       = LoadCursor (NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = szName;
    
    RegisterClass (&wc);
    
    HWND hwnd = CreateWindow (szName, "", WS_SYSMENU | WS_THICKFRAME, 
                              0, 0, 200, 100, NULL, NULL, hI, NULL);
    
    ShowWindow   (hwnd, iCmdShow);
    UpdateWindow (hwnd);
    
    // Nachrichten-Schleife
    MSG msg;
        while (GetMessage (&msg, NULL, 0, 0))
        {
            TranslateMessage (&msg);
            DispatchMessage (&msg);
        }
    return msg.wParam;
    }
    
    // Windows-Nachrichten-Prozedur
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    HDC hdc;
    PAINTSTRUCT ps;
    
    switch (message)
    {
    case WM_PAINT:
        hdc = BeginPaint (hwnd, &ps);
            TextOut (hdc, 20, 20, "Ich bin ein Fenster.", 20);
        EndPaint (hwnd, &ps);
        return 0;
    
    case WM_DESTROY:
        PostQuitMessage (0);
        return 0;
    }
    
    return DefWindowProc (hwnd, message, wParam, lParam);
    }
    

    Damit hat er ein Problem:

    wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
    
    TextOut (hdc, 20, 20, "Ich bin ein Fenster.", 20);
    

    Die Fehlerausgabe des Compilers ist folgende:

    > [Linker error] undefined reference to GetStockObject@4' << \> [Linker error] undefined reference toTextOutA@20' <<
    > C:\Programme\Programmieren\Dev-Cpp\Projects\use\Prompter\Makefile.win [Build Error] [Prompter.exe] Error 1 <<

    Ich benutze Dev-Cpp 4.9.8.0.

    Hoffentlich kann mir jemand helfen. Sicherlich liegt das nur an der Syntax(wie immer).



  • hat nichts mit dem code zu tun sondern den linkereinstellungen.



  • und zwar -lgdi32 dem linker mitangeben



  • und zwar -lgdi32 dem linker mitangeben

    Das müsste automatisch eingestellt sein bei einem Win-Projekt!


Anmelden zum Antworten