|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
t10ottoo Senior JLI'ler
Alter: 40 Anmeldedatum: 15.04.2004 Beiträge: 210 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 15.04.2004, 19:40 Titel: Kapitel 11 - Irgendwas stimmt da nicht |
|
|
Hi,
ich bin halb am Verzweifeln, im Kapitel 11, die Einführung in die Windows-Programmierung, mit dem HellWindows-Fenster. Wenn ichs vom Buch abschreib gehts nicht und wenn ichs vonner CD kopiere gehts auch nicht.
Compilieren geht aber sobald ich starten will zeigt Visual C++
inker-Vorgang läuft...
LIBCD.lib(crt0.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _main
Debug/HelloWindows.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.
HelloWindows.exe - 2 Fehler, 0 Warnung(en)
Das da an
Bitte helf mir, hier ist mal der Code:
Code: | #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));
}
|
Hoffentlich weiß einer weiter...
Gruß
Thomas |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 15.04.2004, 19:52 Titel: |
|
|
Du darfst kein Konsolenprojekt erstellen. Win32 Applikation muss es sein.
[Edit]
So jetzt hab ich diese Frage auch mal beantwortet. ;) |
|
Nach oben |
|
|
t10ottoo Senior JLI'ler
Alter: 40 Anmeldedatum: 15.04.2004 Beiträge: 210 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 15.04.2004, 19:55 Titel: |
|
|
Ahjo, das wars *g*
*schäm*
Danke |
|
Nach oben |
|
|
CorDharel Junior JLI'ler
Anmeldedatum: 15.10.2002 Beiträge: 73 Wohnort: Winterthur, Zürich, CH Medaillen: Keine
|
Verfasst am: 16.04.2004, 12:13 Titel: |
|
|
Was ich dazu sagen kann: Ich empfehle den Code abzuschreiben, weil man da genau nachforschen muss, was jetzt jeder Abschnitt macht. Wenn man den Code nicht Zeile für Zeile auswendig kann, ist das okay, aber das Abschreiben hilft wirklich!
Und eine WIN32 App muss es auch sein (Komisch dass diese Frage so oft kommt...) _________________ Greetz CorDharel |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|