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