This topic is now archived and is closed to further replies.


need help with direct draw

Recommended Posts

I''m trying to do direct draw and I''m getting an error. I pinpointed it down to the line that''s messing up. When I comment it out the program switches into full screen mode and then resumes windows normally. When I include it in the program the program switches into full screen then goes back to windows in 640* 480 mode (I run my windows in 1024*768) then I get this error in a popup window Microsoft Development Environment An unhandled exception of type ''System.NullReferenceException'' occurred in game.exe Additional information: Object reference not set to an instance of an object. Here''s the code, I put a comment above the line that''s not working #include <ddraw.h> #include <windows.h> #include <mmsystem.h> #define INITGUID #define DDRAW_INIT_STRUCT(ddstruct) { memset(&ddstruct,0,sizeof(ddstruct)); ddstruct.dwSize=sizeof(ddstruct); } LPDIRECTDRAW7 lpdd; LPDIRECTDRAWSURFACE7 lpddsPrimary; LPDIRECTDRAWSURFACE7 lpddsBack; DDSURFACEDESC2 ddsd; LPDDSCAPS2 ddscaps; HWND hwnd; void DDInit(void); void DDClose(void); void CreateSurfaces(void); int main() { DDInit(); CreateSurfaces(); DDClose(); } void DDInit(void) { DirectDrawCreateEx(NULL, (void **)&lpdd, IID_IDirectDraw7, NULL); lpdd->SetCooperativeLevel(hwnd, DDSCL_FULLSCREEN | DDSCL_ALLOWMODEX | DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT); lpdd->SetDisplayMode(640,480,32,0,0); } void DDClose(void) { lpdd->Release(); return; } void CreateSurfaces() { HRESULT ddrval; DDRAW_INIT_STRUCT(ddsd); memset(&ddsd,0,sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT; ddsd.dwBackBufferCount = 1; ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX | DDSCAPS_FLIP; lpdd->CreateSurface(&ddsd, &lpddsPrimary, NULL); memset(&ddsd,0,sizeof(ddsd)); ddsd.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER; // the next line is the one that I am getting problems with lpddsPrimary->GetAttachedSurface(&ddsd.ddsCaps, &lpddsBack); }

Share this post

Link to post
Share on other sites