Problem mit dem Hallo Windows Programm



  • Hallo,
    also ich hab da ein Problem mit dem Hallo Windows Programm:
    Hier erstma der Quelltext:

    // Windows
    
    #include <windows.h>
    
    // Funktion zum erzeugen eines Fensters
    HWND CreateMainWindow(HINSTANCE hInstance);
    
    //Callback Funktion
    LRESULT CALLBACK MessageHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
    
    HWND hWnd = 0;
    
    int WINAPI WinMain(HINSTANCE hInstance,
    				   HINSTANCE hPrevInstance,
    				   LPSTR lpCmdLine,
    				   int nShowCmd)
    {
    	hWnd = CreateMainWindow(hInstance);
    
    	if(NULL == hWnd)
    	{
    	MessageBox(0, "Fenster konnte nicht erzeugt werden!", "Fehler", MB_OK | MB_ICONEXCLAMATION);
    	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 Callback Funktion senden
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    
    	return 0;
    }
    
    HWND CreateMainWindow(HINSTANCE hInstance)
    {
    	WNDCLASSEX wndClass =
    	{
    		sizeof(WNDCLASSEX), //Größe
    		CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW, //Stile
    		MessageHandler, //Callback Funktion
    		0,  //Zusätzliche Angaben
    		0,	//unwichtig!!!
    		hInstance, //Anwendungsinstanz
    		LoadIcon(NULL, IDI_WINLOGO), //Logo
    		LoadCursor(NULL, IDC_ARROW), //Cursor
    		(HBRUSH)GetStockObject(WHITE_BRUSH), //Pinsel
    		NULL, //Menü
    		"WindowClass", //name der Klasse
    		LoadIcon(NULL, IDI_WINLOGO) //Logo, oben neben dem Fenstertitel
    	};
    
    	RegisterClassEx(&wndClass);
    
    	return CreateWindowEx
    		(NULL, //erweiterte Stile
    		"WindowClass", // Klassename
    		"Hello Windows", //Fenstertitel
    		WS_OVERLAPPEDWINDOW | WS_VISIBLE, // Fenstereigenschaften
    		100, 100, // Anfangspositionen (x , y)
    		500, 500, // Größe (Breite, Höhe)
    		NULL, // Handle des Elternfensters (falls vorhanden)
    		NULL, // Handle des Menüs (falls vorhanden)
    		hInstance, //Anwendungsinstanz
    		NULL); // für MDI Anwendungen (wird nicht gebraucht)
    }
    
    LRESULT CALLBACK MessageHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    	//Um welche Nachricht handelt es sich?
    	switch(msg)
    	{
    		/*sobald das Fenster geschlossen wird, eine Nachricht senden,
    		die das Programm beendet*/
    
    	case WM_DESTROY:
    		PostQuitMessage(0);
    		return 0;
    		break;
    	}
    
    	//Nachrichten an die Standardnachrichtenverarbeitung von Windows schicken
    
    	return DefWindowProc(hWnd, msg, wParam, lParam);
    }
    

    So, ich hab den Code jetzt also kompiliert und danach wollte ich das Programm auch mal ausprobieren, nur leider kommt dann immer folgende Fehlermeldung:

    Linker-Vorgang läuft...
    LIBCD.lib(crt0.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _main
    Debug/demo.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.
    
    demo.exe - 2 Fehler, 0 Warnung(en)
    

    Was soll mir das jetzt sagen? 😕
    Ich habe schon wie verrückt gegoogelt aber nichts gefunden 😡
    Ich bin noch noob in Sachen Windows-Programmierung und bitte euch um Hilfe!



  • Sag mal, willst du uns verarschen? 😡

    6 Threads weiter unten steht eine Frage mit fast genau denselben Titel.
    Und, wer hätts gedachts, steht da auch die Lösung drin.

    Also ein bisßchen mehr Eigenanstrengung bitte das nächste mal.



  • Danke, den hab ich auch schon gesehen, aber der hat mein Problem net gelöst, sonst hätte ich diesen Beitrag ja wohl kaum geschrieben oder?? ⚠



  • Faulpelz hat zwar Recht, dass unten ein Thread mit dem gleichen Namen steht, doch leider ist man dort etwas vom Thema abgekommen 👎
    Also bitte helft mir!



  • Du hast Konsolenanwendung ausgewählt beim Assistenten. Wähle anstatt dessen Win32-Anwendung.



  • Nein habe ich nicht!!! 😮

    Ich hab alles so gemacht, wie es im Buch stand, warum funktioniert es nicht? 😕



  • Geh mal in Menü Projekteinstellungen ,
    dann wählst du Linker an und liest uns vor, was bei "Subsystem" steht.



  • das hier:

    kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/demo.pdb" /debug /machine:I386 /out:"Debug/demo.exe" /pdbtype:sept
    


  • sry

    da steht halt console hinter:

    subsystem:console
    


  • also hatte kugel doch recht.



  • nein hatte er nicht, ich habe WIN-32 Anwendung ausgewählt



  • Genug der Schuldzuweisungen. ⚠
    Mach da jetzt aus "subsystem:console" "Windows" draus. Und gut ist.



  • du bist ja echt witzig man ich habe WIN-32 Anwendung gewählt ich weiss wohl noch was ich mache und wenn ich euch sage, ich habe es gemacht, dann ist es auch so 😡



  • 😡 😡 😡 😡 😡 😡



  • Gute Nacht, Special Unit 007.



  • Thx @ Sepp, du bist der einzige, der gecheckt hat, wo mein prob liegt, vielen dank 😃 😉 🙂 🕶 😋 🤡 👍 👍



  • ...und somit wäre bewiesen, das Du anstatt Win32 halt Konsole gewählt hattest. Also hatte Kugel eben doch Recht... mann mann mann... was ist los? Haben alle zu Weihnachten einen C++-Baukasten geschenkt bekommen?



  • Oder Visual C++ hat einen Fehler. 🤡 🤡



  • Werde nicht überheblich Hepi, Kugel hatte unrecht
    es hat erst funktioniert nachdem ich subsystem:console in "Windows" geändert habe, denk also nicht, du würdest dich auskennen du neunmalklug ok??
    👎 👎 ⚠ ⚠ 😡 😡



  • ROFL. Leg dich nicht mit Leuten an die sich besser auskennen als du. 🤡



  • loler schrieb:

    ROFL. Leg dich nicht mit Leuten an die sich besser auskennen als du. 🤡

    Hepi und auskennen - ich lach mich weg!!!


Anmelden zum Antworten