Seltsamer Fehler



  • Hallo aööe zusammen,
    ich habe ein Problem und zwar wenn ich diesen Code eingebe:
    [dieser bewirkt das sich ein Windowsfenster offnet]

    // Headerdatei
    #include <windows.h>
    
    // Anwendungsfenster erzeugen
    HWND CreateMainWindow(HINSTANCE hInstance);
    
    //Callback Funktion zur Nachrichtenbehandlung
    LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
    
    // Das Fensterhandle
    HWND hWnd = 0;
    
    // Windows main-Funktion
    int WINAPI WinMain(HINSTANCE hInstance,      // Handle der Programminstanz
                       HINSTANCE hPrevInstance,  // Handle der letzten Instanz
                       LPSTR lpCmdLine,          // Kommandozeile
                       int nCmdShow)             // Art wie das Fenster angezeigt werden soll
    {   
        // Fenster erzeugen und Handle speichern
        hWnd = CreateMainWindow(hInstance);
    
        // Wenn der Rückgabewert 0 ist, ist ein Fehler aufgetreten
        if(0 == hWnd)
        {
            MessageBox(0,"Fenster konnte nicht erzeugt werden","Fehler",MB_OK);
            return 0;
        }
    
       // Struktur, in der Informationen zur Nachricht gespeichert werden
        MSG msg;
    
        // Diese Schleife läuft bis die Nachricht WM_QUIT empfangen wird
        while(GetMessage(&msg,NULL,0,0))
       {
              // Nachricht an die Callbackfunktion senden
             TranslateMessage(&msg);
             DispatchMessage(&msg);
        }
    
        // Rückgabewert an Windows
        return 0;
    }
    
    HWND CreateMainWindow(HINSTANCE hInstance)
    {
        WNDCLASSEX wndClass;                                   // WNDCLASSEX Struktur
    
        // Struktur initialisieren
        wndClass.cbSize        = sizeof(WNDCLASSEX);           // Größe angeben (nie vergessen!)
        wndClass.style         = CS_DBLCLKS | CS_OWNDC |
                                 CS_HREDRAW | CS_VREDRAW;      // Standard Stile
        wndClass.lpfnWndProc   = MessageHandler;               // Die Callback Funktion angeben
    
        wndClass.cbClsExtra    = 0;                            // Zusätzliche Angaben, wird nicht benötigt
        wndClass.cbWndExtra    = 0;                            // Zusätzliche Angaben, wird nicht benötigt
        wndClass.hInstance     = hInstance;                    // Anwendungsinstanz
    
        wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);  // Weisser Pinsel
        wndClass.hCursor       = LoadCursor(NULL, IDC_ARROW);  // Normaler Cursor
        wndClass.lpszMenuName  = NULL;                         // Das Fenster hat kein Menü
        wndClass.lpszClassName = "WindowClass";                // Der Name der Klasse
        wndClass.hIcon         = LoadIcon(NULL, IDI_WINLOGO);  // Windows Logo
        wndClass.hIconSm       = LoadIcon(NULL, IDI_WINLOGO);  // Windows Logo
    
        RegisterClassEx(&wndClass);
    
        return CreateWindowEx(NULL,                   // Keine erweiterten Stile nutzen
                              "WindowClass",          // Klassenname
                              "Hello Windows",        // Fenstertitel
                              WS_OVERLAPPEDWINDOW |   // Fenster
                              WS_VISIBLE,             // Eigenschaften
                              0, 0, 400, 300,         // Anfangsposition und Größe
                              NULL,                   // Handle des Elternfensters
                              NULL,                   // Handle des Menüs
                              hInstance,              // Anwendungsinstanz
                              NULL);                  // wird nicht benötigt
    }
    
    // Diese Funktion wird von Windows aufgrufen, wenn eine Nachricht
    // für Ihr Programm vorliegt
    LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
        // testen, um welche Nachticht es sich handelt
        switch(msg)
        {
            // wenn das Fenster geschlossen wird, eine Nachricht senden,
            // die das Programm beendet
            case WM_DESTROY:
                        PostQuitMessage(0);
                        return 0;
                    break;       
        }
    
        // Wenn wir uns nicht um die Nachricht gekümmert haben
        // wird sie an die Standardnachrichtenverarbeitung von Windows
        // geschickt
        return (DefWindowProc(hwnd, msg, wParam, lParam));
    }
    

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

    Dann kommt diese Fehlermeldung:

    --------------------Configuration: HelloWindows - Win32 Debug--------------------
    Compiling...
    HelloWindows.cpp
    Linking...
    LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    Debug/HelloWindows.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.

    HelloWindows.exe - 2 error(s), 0 warning(s)

    Der Code ist korrekt da es von einem Profi kommt, Christian Rouselle.
    Mein C++ ist version 6 und ich habe die DX8a_SDK insztalliert.
    Kann mir einer helfen warum dieser Fehler kommt, das brinkt mich zum verzweifenln. Dieser Code stammt vom Buch Jetzt lerne ich Spieleprogrammieren mit DX und VC++

    [ Dieser Beitrag wurde am 19.01.2003 um 18:26 Uhr von Dimah editiert. ]



  • hast du eine windows applikation erstellt?

    du darfst für diesen code KEINE konsolenanwendung machen!



    1. CodeTags verwenden

    2. ein Win32 Programm und KEIN Kosnolenprogramm erstellen....



  • Sorry, ich bin noch ganz neu bei C++, ämmmm kontet ihr vieleicht ganz genau sagen was ich anklicken muss?



  • Original erstellt von Gott der 2.:
    Sorry, ich bin noch ganz neu bei C++, ämmmm kontet ihr vieleicht ganz genau sagen was ich anklicken muss?

    Es ist wirklich nicht sinnvoll, mit WinAPI zu beginnen, bevor Du halbwegs sicher C/C++ programmieren kannst, das versaut Dir nur den Stil und lernen wirst Du auch nicht das Wesentliche!

    edit: zu ungenau!

    [ Dieser Beitrag wurde am 19.01.2003 um 13:17 Uhr von nman editiert. ]



  • Original erstellt von elise:
    **hast du eine windows applikation erstellt?

    du darfst für diesen code KEINE konsolenanwendung machen!**

    Ich war schnelle 😛



  • Original erstellt von DasPinsch:
    Ich war schnelle 😛

    *lol*

    @Gott der 2.
    datei->neu->WIN32-Anwendung



  • @Gott der 2.
    Der Thread gehört hier nicht hin, hier gehts nur um Standard C++.
    Thread verschoben ins msvc Forum. MFC mit dem Visual C++



  • Auch hier gehört er nicht rein ->>> WinAPI


Anmelden zum Antworten