Anfängerproblem: "Fehler beim setzen der Kooperationsebene!"



  • Ich wollte eine einfach BMP Datei auf einem schwarzen hintergrund ausgeben lassen.
    Der Compiler gibt keine Fehlermeldung,aber wenn ich das Programm starte,dann sagt er immer,dass die Kooperationsebene nicht gesetzt werden konnte.
    Ich habe keine Ahnung,was ich da aufeinmal falsch gemacht habe.
    Hier der Code:

    Erst das Objekt!

    class DDirectDrawClass
    {
    public:
    	DDirectDrawClass(void);
    	~DDirectDrawClass();
    	BOOL Init(HWND hWnd);
    	void Clear(int Color);
    	void Flip(void);
    	LPDIRECTDRAWSURFACE7 GetBuffer(void);
    	LPDIRECTDRAWSURFACE7 CreateSurfaceFromBitmap(LPSTR File,int dWidth,int dHeight);
    private:
    	LPDIRECTDRAW7 lpDD7;
    	LPDIRECTDRAWSURFACE7 lpDDSPrimary;
    	LPDIRECTDRAWSURFACE7 lpDDSBackBuffer;
    };
    

    Und die Methode!

    BOOL DDirectDrawClass::Init(HWND hWnd)
    {    
        if(FAILED(DirectDrawCreateEx(NULL,(LPVOID*)&lpDD7,IID_IDirectDraw7,NULL)))
        {  
            return Error("Fehler beim Anlegen des DirectDraw-Objekts");
        }
        if(FAILED(lpDD7->SetCooperativeLevel(hWnd,DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN))) //Hier liegt irgendwo der Fehler :(
        {
            return Error("Fehler beim Setzen der Kooperationsebene");    
        }
        if(FAILED(lpDD7->SetDisplayMode(SCR_WIDTH,SCR_HEIGHT,COLOR_DEPTH,0,0)))
        {
            return Error("Fehler beim Setzen des Displaymodes!");    
        }
        DDSURFACEDESC2 ddsd;
        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;
        if(FAILED(lpDD7->CreateSurface(&ddsd,&lpDDSPrimary,NULL)))
        {
            return Error("Fehler beim Anlegen der primären Oberfläche");
        }
    
        ddsd.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER;
        if(FAILED(lpDDSPrimary->GetAttachedSurface(&ddsd.ddsCaps,&lpDDSBackBuffer)))
        {
            return Error("Fehler beim Anlegen des Puffers");
        }
        return TRUE;
    }
    

    Ich wüsste nicht,was man noch wissen muss um dieses Problem zu beheben.
    Ihr müsst dann bescheid sagen,wenn ihr noch was wissen wollt,dann setz ich den entsprechenden Code hier rein.



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Dafür gibt die Debug Runtimes und die Fehlercodes der Funktionen. Viel Spass. f'`8k

    Autocogito

    Gruß, TGGC (\-/ returns)



  • ich rate mal:
    hWnd ist kein gültiger Handle - ansonsten sieht das gut aus

    http://turing.fh-landshut.de/~jamann/DirectDraw.htm


Anmelden zum Antworten