|
|
每次执行到LOCK就出问题,源代码在下边,请各位高手帮忙看一下.
//初始化部分:
int Game_Init()
{
//创建DirectDraw
if (FAILED(DirectDrawCreate(NULL,&lpddtmp,NULL)))
return 0;
//获得IID_IDirectDraw4接口
if (FAILED(lpddtmp->QueryInterface(IID_IDirectDraw4,(LPVOID*)&lpdd)))
return 0;
if (lpddtmp)
{
lpddtmp->Release();
lpddtmp=NULL;
}
//设置协作模式,DDSCL_FULLSCREEN|DDSCL_ALLOWMODEX|DDSCL_EXCLUSIVE|DDSCL_ALLOWREBOOT DDSCL_NORMAL
if (FAILED(lpdd->SetCooperativeLevel(hWnd,DDSCL_NORMAL)))
return 0;
//设置显示模式
//if (FAILED(lpdd->SetDisplayMode(SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_BPP,0,0)))
//return 0;
DDRAW_INIT_STRUCT(ddsd);
ddsd.dwFlags=DDSD_CAPS;
ddsd.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE;
//创建主表面
if (FAILED(lpdd->CreateSurface(&ddsd,&lpddsprimary,NULL)))
return 0;
DDPIXELFORMAT ddpixelformat;
DDRAW_INIT_STRUCT(ddpixelformat);
lpddsprimary->GetPixelFormat(&ddpixelformat);
pixel_format=ddpixelformat.dwRGBBitCount;
return 1;
}
int Game_Main()
{
if (windowstate)
{
return 1;
}
if (KEYDOWN(VK_ESCAPE))
{
PostMessage(hWnd,WM_CLOSE,0,0);
windowstate=true;
}
RECT client;
GetWindowRect(hWnd,&client);
DDRAW_INIT_STRUCT(ddsd);
if (FAILED(lpddsprimary->Lock(NULL,&ddsd,DDLOCK_SURFACEMEMORYPTR|DDLOCK_WAIT,NULL)))
return 0;
if (FAILED(lpddsprimary->Unlock(NULL)))
return 0;
DDBLTFX ddbltfx;
Sleep(30);
return 1;
}
其他都没问题,一执行到Lock锁定那里就出错了.
|
|