Problem mit DDraw



  • Hallo an alle.
    Ich hab da ein Problem mit der Fullscreen übernahme mit DirectX.
    Das Kompilern des quellcodes funktioniert problemlos wenn ich aber das Programm dann starte kommt meine selbstgeschriebene Fehlermeldung:
    ,,DDraw Fehler: CoopLevel()!"
    Mit dieser Funktion Starte ich die übernahme des Fensters...ich glaub der Fehler muss irgendwo hier liegen.

    BOOL xxxDDraw_initialisieren(void)
    {
    	HRESULT          ddrval;
    	HDC              hdc;
    	DDSURFACEDESC2   ddsd;
    	DDSCAPS2         ddscaps;
    
    	ddrval = DirectDrawCreateEx(NULL,(LPVOID *) &lpDD, IID_IDirectDraw7, NULL);
    
    	if(ddrval != DD_OK)
    	{
    		MessageBox(hwnd, "DDraw Fehler: CreateEx()", "XXX", MB_OK);
    		return FALSE;
    	}
    
    	ddrval = lpDD->SetCooperativeLevel(hwnd, DDSCL_FULLSCREEN|DDSCL_EXCLUSIVE);
    
    	if(ddrval != DD_OK)
    	{
    		MessageBox(hwnd, "DDraw Fehler: CoopLevel()", "XXX", MB_OK);
    		return FALSE;
    	}
    
    	ddrval = lpDD->SetDisplayMode(SCREEN_BREITE, SCREEN_HOEHE, SCREEN_BPP, 0, 0);
    
    	if(ddrval != DD_OK)
    	{
    		MessageBox(hwnd, "DDraw Fehler: SetMode()", "XXX", MB_OK);
    		return FALSE;
    	}
    
    	ZeroMemory(&ddsd, sizeof(ddsd));
    	ddsd.dwSize  = sizeof(ddsd);
    	ddsd.dwFlags  = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
    	ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX;
    	ddsd.dwBackBufferCount = 1;
    
    	ddrval = lpDD->CreateSurface(&ddsd, &lpDDSPrimary, NULL);
    
    	if(ddrval != DD_OK)
    	{
    		MessageBox(hwnd, "DDraw Fehler: CreateSurf()", "XXX", MB_OK);
    		return FALSE;
    	}
    
    	ZeroMemory(&ddscaps, sizeof(ddscaps));
    	ddscaps.dwCaps = DDSCAPS_BACKBUFFER;
    
    	ddrval = lpDDSPrimary->GetAttachedSurface(&ddscaps, &lpDDSBack);
    
    	if(ddrval != DD_OK)
    	{
    
    		MessageBox(hwnd, "DDraw Fahler AttachedSurf()", "XXX", MB_OK);
    		return FALSE;
    	}
    
    	xxxDDraw_Puffer_leeren(lpDDSPrimary, 255);
    	xxxDDraw_Puffer_leeren(lpDDSBack, 255);
    
    	if(lpDDSPrimary->GetDC(&hdc) == DD_OK)
    	{
    		SetBkColor(hdc, RGB(0, 0, 0));
    		SetTextColor(hdc, RGB(255, 255, 0));
    		TextOut(hdc, 380, 300, "Front", lstrlen("Front"));
    		lpDDSPrimary->ReleaseDC(hdc);
    	}
    
    	if(lpDDSBack->GetDC(&hdc) == DD_OK)
    	{
    		SetBkColor(hdc, RGB(255, 0, 0));
    		SetTextColor(hdc, RGB(255, 255, 0));
    		TextOut(hdc, 380, 300, "Back", lstrlen("Back"));
    		lpDDSBack->ReleaseDC(hdc);
    	}
    
    	return TRUE;
    }
    

    Wäre Nett wenn ihr mir helfen könntet



  • hab das Problem gelöst


Anmelden zum Antworten