Habe propleme mit createWindowEx



  • Habe proplem mit dem scheis CreateWindowEx er schreibt immer ein error hin wen ich windows programmier so ein scheis hab ich noch nicht erlebt ich bin die ganze nacht dran gesesen und trozten geht die scheise immer noch nicht bald flip ich aus das is ja zum schreien ich hab alle include pfade überprüft und ansonten eigentlich auch alles was es sonnst noch so gibt... ich schreib euch jetzt mal den Fehler hin ach ja der quell code kann gar net falsch sein weil dat die beispiele von dem buch sin

    --------------------Konfiguration: DirectXGraphics - Win32 Debug--------------------
    Kompilierung läuft...
    DirectXGraphics.cpp
    c:\programme\jli beispiele\kapitel_19\directxgraphics\directxgraphics.cpp(100) : error C2065: 'CreateWindowExA' : nichtdeklarierter Bezeichner
    Fehler beim Ausführen von cl.exe.

    DirectXGraphics.exe - 1 Fehler, 0 Warnung(en)

    bitte helft mir ich lauf sonst AMOK und da hat meine MAMA sicher was dagegen 😡 najo jut night und träumt was schoenes

    #include <ddraw.h>
    
    #define SCR_WIDTH		1024
    #define SCR_HEIGHT		768
    #define COLOR_DEPTH		32
    
    #define SPRITE_WIDTH	84
    #define SPRITE_HEIGHT	74
    
    // Prototypen
    
    HWND CreateMainWindow(HINSTANCE hInstance);
    LRESULT CALLBACK MessageHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
    
    bool InitDirectDraw(HWND hWnd);
    void CleanUpDirectDraw(void);
    
    void Render(void);
    LPDIRECTDRAWSURFACE7 CreateSurfaceFromBitmap(LPSTR File, int dWidth, int dHeight);
    bool Error(char* msg);
    
    // Variablen / Zeiger
    HWND hWnd = NULL;
    int x = 462;
    int y = 335;
    
    // DirectX DirectDraw Objekte
    LPDIRECTDRAW7			lpDD7			= NULL;
    LPDIRECTDRAWSURFACE7	lpDDSPrimary	= NULL;
    LPDIRECTDRAWSURFACE7	lpDDSBack		= NULL;
    LPDIRECTDRAWSURFACE7	lpDDSurface		= NULL;
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {
    	hWnd = CreateMainWindow(hInstance);
    
    	if(NULL == hWnd)
    	{
    		Error("Fehler beim Erzeugen des Fensters");
    	}
    
    	if(!InitDirectDraw(hWnd))
    	{
    		Error("Fehler beim Initialisieren des DD Objekts");
    	}
    
    	MSG msg;
    
    	while(GetMessage(&msg,NULL,0,0))
    	{
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    
    	return FALSE;
    }
    
    HWND CreateMainWindow(HINSTANCE hInstance)
    {
    	WNDCLASSEX wndClass;
    
    	wndClass.cbSize					= sizeof(WNDCLASSEX);
    	wndClass.style					= CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
    
    	wndClass.lpfnWndProc			= MessageHandler;
    
    	wndClass.cbClsExtra				= 0;
    	wndClass.cbWndExtra				= 0;
    	wndClass.hInstance				= hInstance;
    
    	wndClass.hbrBackground			= (HBRUSH)GetStockObject(BLACK_BRUSH);
    
    	wndClass.lpszClassName			= "WindowClass";
    	wndClass.lpszMenuName			= NULL;
    
    	wndClass.hCursor				= LoadCursor(NULL,IDC_ARROW);
    	wndClass.hIcon					= LoadIcon(NULL,IDI_WINLOGO);
    	wndClass.hIconSm				= LoadIcon(NULL,IDI_WINLOGO);
    
    	RegisterClassEx(&wndClass);
    
    	return CreateWindowExA(
    					NULL,
    					"WindowClass",
    					"Win32 DD Bitmap",
    					WS_POPUP|WS_VISIBLE,
    					0, 0,
    					400, 300,
    					NULL,
    					NULL,
    					hInstance,
    					NULL);
    }
    
    LRESULT CALLBACK MessageHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    	switch(msg)
    	{
    		case WM_KEYDOWN:
    			switch(wParam)
    			{
    				case VK_ESCAPE:
    					DestroyWindow(hWnd);
    				break;
    
    				case VK_LEFT:
    					if(x-10 > 0)
    					{
    						x -= 10;
    						Render();
    					}
    				break;
    
    				case VK_RIGHT:
    					if(x+10 < SCR_WIDTH-SPRITE_WIDTH)
    					{
    						x += 10;
    						Render();
    					}
    				break;
    
    				case VK_UP:
    					if(y-10 > 0)
    					{
    						y -= 10;
    						Render();
    					}
    				break;
    
    				case VK_DOWN:
    					if(y+10 < SCR_HEIGHT-SPRITE_HEIGHT)
    					{
    						y += 10;
    						Render();
    					}
    				break;
    			}
    		break;
    
    		case WM_PAINT:
    			PAINTSTRUCT ps;
    			BeginPaint(hWnd,&ps);
    			Render();
    			EndPaint(hWnd,&ps);
    		break;
    
    		case WM_DESTROY:
    			CleanUpDirectDraw();
    			PostQuitMessage(0);
    		break;
    	}
    	return (DefWindowProc(hWnd,msg,wParam,lParam));
    }
    
    bool InitDirectDraw(HWND hWnd)
    {
    	if(FAILED(DirectDrawCreateEx(NULL,(LPVOID*)&lpDD7,IID_IDirectDraw7,NULL)))
    	{
    		return Error("Fehler beim Anlegen des DD Objekts");
    	}
    
    	if(FAILED(lpDD7->SetCooperativeLevel(hWnd,DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN)))
    	{
    		return Error("Fehler beim Anlegen der Kooperationsebene");
    	}
    
    	if(FAILED(lpDD7->SetDisplayMode(SCR_WIDTH,SCR_HEIGHT,COLOR_DEPTH,0,0)))
    	{
    		return Error("Fehler beim Ändern des Anzeigemodus");
    	}
    
    	DDSURFACEDESC2 ddsd;
    
    	ZeroMemory(&ddsd,sizeof(ddsd));
    	ddsd.dwSize = sizeof(ddsd);
    
    	ddsd.dwFlags = DDSD_CAPS;
    
    	ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE|DDSCAPS_VIDEOMEMORY;
    
    	if(FAILED(lpDD7->CreateSurface(&ddsd,&lpDDSPrimary,NULL)))
    	{
    		return Error("Fehler beim Anlegen der primären Oberfläche");
    	}
    
    	lpDDSurface = CreateSurfaceFromBitmap("c:\\f29.bmp",SPRITE_WIDTH,SPRITE_HEIGHT);
    
    	return TRUE;
    }
    
    void CleanUpDirectDraw(void)
    {
    	if(NULL != lpDD7)
    	{
    		lpDD7->Release();
    		lpDD7 = NULL;
    	}
    	if(NULL != lpDDSPrimary)
    	{
    		lpDDSPrimary->Release();
    		lpDDSPrimary = NULL;
    	}
    	if(NULL != lpDDSBack)
    	{
    		lpDDSBack->Release();
    		lpDDSBack = NULL;
    	}
    	if(NULL != lpDDSurface)
    	{
    		lpDDSurface->Release();
    		lpDDSurface = NULL;
    	}
    }
    
    void Render(void)
    {	
    	DDBLTFX DDBltFX;
    
    	ZeroMemory(&DDBltFX,sizeof(DDBltFX));
    	DDBltFX.dwSize = sizeof(DDBltFX);
    
    	DDBltFX.dwFillColor = 0;
    
    	lpDDSPrimary->Blt(NULL,NULL,NULL,DDBLT_COLORFILL|DDBLT_WAIT,&DDBltFX);
    
    	lpDDSPrimary->BltFast(x,y,lpDDSurface,NULL,DDBLTFAST_WAIT);
    }
    
    LPDIRECTDRAWSURFACE7 CreateSurfaceFromBitmap(LPSTR File, int dWidth, int dHeight)
    {
    	HDC hBmDC, hSurfDC;
    
    	HBITMAP hBM;
    
    	DDSURFACEDESC2 SurfDesc;
    
    	hBM = (HBITMAP)LoadImage(0,File,IMAGE_BITMAP,dWidth,dHeight,LR_LOADFROMFILE);
    
    	if(NULL == hBM)
    	{
    		return NULL;
    	}
    
    	ZeroMemory(&SurfDesc,sizeof(SurfDesc));
    	SurfDesc.dwSize = sizeof(SurfDesc);
    
    	SurfDesc.dwFlags = DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT;
    
    	SurfDesc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
    	SurfDesc.dwWidth	= dWidth;
    	SurfDesc.dwHeight	= dHeight;
    
    	if(FAILED(lpDD7->CreateSurface(&SurfDesc,&lpDDSurface,NULL)))
    	{
    		Error("Fehler beim Anlegen einer weiteren Oberfläche");
    		return NULL;
    	}
    
    	lpDDSurface->GetDC(&hSurfDC);
    
    	hBmDC = CreateCompatibleDC(hSurfDC);
    
    	SelectObject(hBmDC,hBM);
    
    	BitBlt(hSurfDC,0,0,dWidth,dHeight,hBmDC,0,0,SRCCOPY);
    
    	lpDDSurface->ReleaseDC(hSurfDC);
    
    	DeleteDC(hBmDC);
    
    	DeleteObject(hBM);
    
    	return lpDDSurface;
    }
    
    bool Error(char* msg)
    {
    	OutputDebugString(msg);
    	OutputDebugString("\n");
    
    	MessageBox(hWnd,msg,"Fehler",MB_OK|MB_ICONERROR);
    	return 0;
    }
    

    HILLLLFFFFEEEEEEEEE



  • 1. Das ist WinAPI 🤡

    2. Start mal nen versuch mit der zeile:

    #include <windows.h>
    


  • in ddraw is windows.h schon drine und mit windows.h funtzt es auch ned es muss irgendwie am complimierererererer liegen 😕 ➡ 🙄 ➡ 😕



  • CreateWindowExA' : nichtdeklarierter Bezeichner

    versuchs mal mit : CreateWindowEx



  • ICH SCHREiB DOCH createwindowEx und der compliem,ererrerr gibt mir diese scheis msg raus deswegen hab ich ja den scheis quellcode reingemacht
    ... scheis windows
    scheis visual studio
    scheis bill gates
    scheis Uncel sam
    zum glück gibts Gurana sonst wäre ich schon längst weeeggg



  • HWND CreateMainWindow(HINSTANCE hInstance) 
    { 
        WNDCLASSEX wndClass; 
    
    ...
    ...
    ...
    ...
    
        RegisterClassEx(&wndClass); 
    
        return CreateWindowExA( 
                        NULL, 
                        "WindowClass", 
                        "Win32 DD Bitmap", 
                        WS_POPUP|WS_VISIBLE, 
                        0, 0, 
                        400, 300, 
                        NULL, 
                        NULL, 
                        hInstance, 
                        NULL); 
    }
    

    Was hast du den ! 😮
    Also in den Code das du gepostet hast steht CreateWindowExA!



  • sorry

    is ja wurscht mit createwindowex funzt es auch ned und der gleche fehler tritt auf GENAU der gleiche selbst wenn ich createwindowex1 und oben das noch mal definier kammt auch dieses creatwindowexA da muss irgendwas Falsch sein tut mir leid für falschen quell code aber der quellcode bringt euch auch nischt weil das garantiert mit dem complierer zu tun hat oder mit meinem (ALDI)Betribssytem



  • lange gesucht, aber gefunden.

    dein projekt ist abhängig von den ddraw.lib und dxguid.lib Libfiles die du deinen Linker übergeben muss, sonst kann es nicht compiliert werden.

    diese dateien sind im directx sdk drin!

    mfg
    zeus



  • ES geht ja nicht mal HelloWindows das bei dem visual c++ mitgeliefert wird.
    DA kommen ja sogar 2 fehler auserdem hat createwindowex wenig direct x zu tun

    trozdem danke das ihr nischt gefunden hab ich hab schon zweimla neuinstalliert alle include dateien überprüft und bin alle einstellungen durchgegangen...

    SCHEIS VISUAL C++



  • a) teste mal ob CreateWindow funzt (ersten parameter weglassen-benutzt ja eh keine erweiterten stile)
    b) auch wenn ich mich jetzt blamiere:
    #include<winuser.h>
    schaden dürfte es nicht


Anmelden zum Antworten