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 angebenwndClass.cbClsExtra = 0; // Zusätzliche Angaben, wird nicht benötigt
wndClass.cbWndExtra = 0; // Zusätzliche Angaben, wird nicht benötigt
wndClass.hInstance = hInstance; // AnwendungsinstanzwndClass.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 LogoRegisterClassEx(&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