Letzter Versuch: DirectDraw Initilisierung, Fehler bei SetDisplayMode



  • Hallo! Im letzten Thread wusste niemand die Lösung, einen Versuch wage ich noch:

    Ich will ein DirectDrawInterface bekommen, folgenden Code habe ich dafür:

    // Fenstereigenschaften
    #define SCREEN_WIDTH  640
    #define SCREEN_HEIGHT 480
    #define SCREEN_BPP      8
    
    // Global
    LPDIRECTDRAW lpdd7 = NULL;
    
    [...]
    
    int Game_Init()
    {
    
    	if(FAILED(DirectDrawCreateEx(NULL, (void **)&lpdd7, IID_IDirectDraw7, NULL)))
    		MessageBox(main_window_handle, "Fehler bei DirectDrawCreateEx!", "Fehler", MB_OK | MB_ICONERROR);
    
    	if(FAILED(lpdd7->SetCooperativeLevel(main_window_handle, DDSCL_FULLSCREEN | DDSCL_ALLOWMODEX | DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT)))
    		MessageBox(main_window_handle, "Fehler bei SetCooperativeLevel!", "Fehler", MB_OK | MB_ICONERROR);
    
    	if(FAILED(lpdd7->SetDisplayMode(SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_BBP)))
    	{
    		MessageBox(main_window_handle, "Fehler bei SetDisplayMode!", "Fehler", MB_OK | MB_ICONERROR);
    		return(0);
    }
    

    Er stürzt zur Laufzeit ab compiliert aber ohne Fehler:

    http://mitglied.lycos.de/inselkampf/c++/error.jpg

    Eine normale Fensteranwendung lässt sich problemlos initiallisieren wenn ich SetDisplayMode weglasse und SetCooperativeLevel auf "normal" setze:

    // Fenstereigenschaften
    #define SCREEN_WIDTH  640
    #define SCREEN_HEIGHT 480
    #define SCREEN_BPP      8
    
    // Global
    LPDIRECTDRAW lpdd7 = NULL;
    
    [...]
    
    int Game_Init()
    {
    
    	if(FAILED(DirectDrawCreateEx(NULL, (void **)&lpdd7, IID_IDirectDraw7, NULL)))
    		MessageBox(main_window_handle, "Fehler bei DirectDrawCreateEx!", "Fehler", MB_OK | MB_ICONERROR);
    
    	if(FAILED(lpdd7->SetCooperativeLevel(main_window_handle, DDSCL_NORMAL)))
    		MessageBox(main_window_handle, "Fehler bei SetCooperativeLevel!", "Fehler", MB_OK | MB_ICONERROR);
    
    }
    

    Ich hab keinen Plan was falsch ist, in dem Buch "The tricks of the windows game programming gurus" übergibt Andre LaMothé 5 Befehle an SetDisplayMode,

    lpdd7->SetDisplayMode(SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_BBP,0,0)
    

    Aber beim Visual Studio Compiler sagtmir die Funktion würde keine 5 Parameter akzeptieren, liegt es evt. daran?

    *planlos*

    Nagetier 🙂



  • Kleiner Nachtrag:

    Setze ich hier

    f(FAILED(DirectDrawCreateEx(NULL, (void **)&lpdd7, IID_IDirectDraw7, NULL)))
    		MessageBox(main_window_handle, "Fehler bei DirectDrawCreateEx!", "Fehler", MB_OK | MB_ICONERROR)
    

    IID_IDIRECTDRAW7 auf IDD_IDIRECTDRAW4 oder 2 gibt er nicht mehr diesen Fehler aus sondern zeigt meine Messagebox an:

    if(FAILED(lpdd7->SetDisplayMode(SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_BBP))) 
        { 
            MessageBox(main_window_handle, "Fehler bei SetDisplayMode!", "Fehler", MB_OK | MB_ICONERROR); 
    }
    

    😕



  • Ahh falsches Forum *schäm* ist ein Mod zu nett und schiebts ins Spieleforum?
    Aber wenn mir hier jemand helfen kann wäre ich auch happy 😉



  • Nagetier schrieb:

    // Global
    LPDIRECTDRAW lpdd7 = NULL;
    

    Ich habe mich noch nie mit diesem Krams auseinandergesetzt. Aber wenn da ein IDirectDraw7* rein soll, warum schreibst Du dann IDirectDraw*? Das soll doch wohl eher so aussehen:

    // Global
    LPDIRECTDRAW7 lpdd7 = NULL;
                ^
                |
    


  • yo das wars au man *an den kopf hau*

    vielen dank


Anmelden zum Antworten