Hilfe bei folgendem Code



  • Habe folgende Fehlermeldungen beim compilieren. Es handelt sich um einen Code den ich aus einem Übungsbuch übernommen habe. Sollte aber eigentlich fehlerfrei sein.

    Fehlermeldung:
    --------------------Konfiguration: Der_erste_Versuch - Win32 Debug--------------------
    Kompilierung läuft...
    Gameshell.cpp
    C:\Programme\Microsoft Visual Studio\MyProjects\Der_erste_Versuch\Gameshell.cpp(79) : error C2440: 'type cast' : 'unsigned int' kann nicht in 'struct tagWNDCLASSEXA' konvertiert werden
    Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Ueberladungsaufloesung des Konstruktors ist mehrdeutig
    C:\Programme\Microsoft Visual Studio\MyProjects\Der_erste_Versuch\Gameshell.cpp(131) : error C2065: 'vk_Code' : nichtdeklarierter Bezeichner
    Fehler beim Ausführen von cl.exe.

    Gameshell.obj - 2 Fehler, 0 Warnung(en)

    Code:

    //---------------------------------------------------------
    //DEFINES
    //------------------------------------------------------------
    #define WINDOW_CLASS_NAME "Game Shell Window"
    #define WIN32_LEAN_AND_MEAN
    
    //--------------------------------------------------------
    //INCLUDES
    //---------------------------------------------------------
    #include <windows.h>
    
    //---------------------------------------------------------
    //MACROS
    //---------------------------------------------------------
    #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_Code)&0x8000)?1:0)
    #define KEYUP(vk_code) ((GetAsyncKeyState(vk_Code)&0x8000)?0:1)
    
    //-------------------------------------------------------------
    //GLOBALS
    //-------------------------------------------------------------
    HWND main_window_handle = NULL;
    HINSTANCE hinstance_app = NULL;
    
    //------------------------------------------------------------
    //Wichtige Game-Funktionsprototypen
    //------------------------------------------------------------
    void Game_Shutdown(void);
    void Game_Init(void);
    void Game_Main(void);
    
    //---------------------------------------------------------------
    // Funktionsdefinitionen
    //------------------------------------------------------------------
    LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
    {
    	PAINTSTRUCT ps;
    	HDC			hdc;
    
    	// Nachrichtenverarbeitung
    	switch(msg)
    	{
    		case WM_CREATE:
    		{
    			return(0);
    		}
    		break;
    
    		case WM_PAINT:
    		{
    			hdc = BeginPaint(hwnd,&ps);
    			EndPaint(hwnd,&ps);
    			return (0);
    			}
    			break;
    
    		case WM_DESTROY:
    		{
    			PostQuitMessage(0);
    			return (0);
    		}
    		break;
    
    		default:
    		break;
    	}
    	return (DefWindowProc(hwnd, msg, wparam, lparam));
    }
    
    ////////////////////////////////////////////////////////////////
    
    int WINAPI WinMAin(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow)
    {
    	WNDCLASSEX winclass;
    	HWND hwnd;
    	MSG msg;
    
    	// Fenstereigenschaften festlegen:
    	winclass.cbSize = sizeof(WNDCLASSEX)
    	winclass.style = CS_HREDRAW|CS_VREDRAW;
    	winclass.lpfnWndProc = WindowProc;
    	winclass.cbClsExtra = 0;
    	winclass.cbWndExtra = 0;
    	winclass.hInstance = hinstance;
    	winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    	winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    	winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
    	winclass.lpszMenuName = NULL;
    	winclass.lpszClassName = WINDOW_CLASS_NAME;
    	winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    
    	hinstance_app = hinstance;
    
    	if(!RegisterClassEx(&winclass))
    		return(0);
    	if(!(hwnd = CreateWindowEx(NULL, WINDOW_CLASS_NAME, "My Game Shell", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0,0,800,600, NULL,NULL,hinstance, NULL)))
    		return (0);
    
    	main_window_handle = hwnd;
    
    	Game_Init();
    
    	while(TRUE) // Nachrichtenweiterleitung
    	{
    		if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
    		{
    			if(msg.message == WM_QUIT)
    				break;
    
    			TranslateMessage(&msg);
    			DispatchMessage(&msg);
    		}
    
    		Game_Main();
    	}
    
    	Game_Shutdown();
    
    	return(msg.wParam);
    }
    
    //////////////////////////////////////////////////////////////////////////////////
    
    void Game_Init(void)
    {}
    
    /////////////////////////////////////////////////////////////////////////////////
    
    void Game_Main(void)
    {
    	// Mit Esc kann die Anwendung verlassen werden
    	if(KEYDOWN(VK_ESCAPE))
    		SendMessage(main_window_handle, WM_CLOSE,0,0);
    }
    
    //////////////////////////////////////////////////////////////////////////////////
    
    void Game_Shutdown(void)
    {}
    

    Falls jemand ne Idee hat bin ich echt dankbar.



  • #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_Code)&0x8000)?1:0) 
    #define KEYUP(vk_code) ((GetAsyncKeyState(vk_Code)&0x8000)?0:1)
    

    vk_code != vk_Code !

    An welcher Stelle tritt denn die 2. Fehlermeldung auf?

    MfG Spacelord



  • Ok,schon passiert.

    winclass.cbSize = sizeof(WNDCLASSEX) //kein Semikolon!
    

    und:

    int WINAPI WinMAin //kleines a
    

    MfG Spacelord



  • Ich danke euch. Die Fehler sind jetzt verschwunden. Habe allerdings jetzt folgende Fehlermeldung beim linken:

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

    Gameshell.exe - 2 Fehler, 0 Warnung(en)

    Hat jemand noch dazu ne Idee?



  • Mr.Blond schrieb:

    Ich danke euch.

    Noch bin ich nur einer.Sobald ich völlig schizophren bin sage ich Bescheid 😃 😉 .

    Dein main Fehler lässt auf den falschen Projekttyp schliessen.
    Du brauchst ne Win32 Anwendung kein Konsolenprojekt.

    MfG Spacelord



  • So jetzt aber. Hattest recht gehabt. Ich Depp habe keine Win32 Anwendung ausgewählt. Danach hats geklappt. Arbeite heute zum ersten mal mit VISUAL C++.

    Hatte vorher nur den Borland C++ Compiler benutzt. Ist schon ein bisschen was anderes.

    MFG

    Mr.Blond


Anmelden zum Antworten