Problem!!!



  • Hallo alle 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++



  • Probier es mal mit einer Win32-Anwendung (Nicht Konsole) 😉



  • Das geht leider nicht 😞 , da endert sich nicht einmal die Fehlermeldung. Trotzdem danke. 🙂



  • File -> New -> Win32 Application

    Bist du sich das du das ausgewählst hast und damit ein neues Projekt erstellt hast? Dein Code wird bei mir problemlos kompliert.



  • Strike, jetzt gehts, ??? das hab ich mindestens 10mal versucht. Und ich hab C++ 2mal neuinstalliert und die SDK auch. Ich dachte schon mein Windows sei kuputt. Egal jetzt gehts ja. Wer hat diese CD gemacht die bei dem Buch Spieleprogrammieren mit VC++ und DX von Markt+Technik, das muss voll der Dummkopf sein. Naja vielen Danke



  • Der Code ist korrekt da es von einem Profi kommt, Christian Rouselle.

    Wer kennt ihn nicht... 😃



  • Jepp sein Buch ist echt gut. Aber die CD... :o naja voller 😮 Bugs


Anmelden zum Antworten