|
在创建双缓冲界面时,在取缓冲页面的指针时失败,HRESULT的值指明错误为”Requested item was not found.“。部分原代码如下:
LPDIRECTDRAW7 lpDD=NULL;
LPDIRECTDRAWSURFACE7 lpDDSPrimary=NULL;
LPDIRECTDRAWSURFACE7 lpDDSBack=NULL;
drval=DirectDrawCreateEx(NULL,(LPVOID*)&lpDD,IID_IDirectDraw7,NULL);
if(FAILED(ddrval))
{
ErrStr=Err_DirectDrawCreate;
return FALSE;
}
//SET COOPERATIVE LEVEL
ddrval = lpDD->SetCooperativeLevel(hWnd,DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN);
if(FAILED(ddrval))
{
ErrStr=Err_Coop;
return FALSE;
}
//SET THE DISPLAY MODE
ddrval = lpDD->SetDisplayMode(800,600,16,0,0);
if(FAILED(ddrval))
{
ErrStr="SET DISPLAYMODE ERROR";
return FALSE;
}
DDSURFACEDESC2 ddsd;
DDSCAPS2 ddscaps;
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;
ddrval=lpDD->CreateSurface(&ddsd,&lpDDSPrimary,NULL);
if(FAILED(ddrval))
{
ErrStr=Err_CreateSurf;
return FALSE;
}
//Fetch back buffer interface
ddscaps.dwCaps=DDSCAPS_BACKBUFFER;
ddrval=lpDDSPrimary->GetAttachedSurface(&ddscaps,&lpDDSBack);
if(FAILED(ddrval))
{
ErrStr="create backsurface false";
return FALSE;
}
谢谢各位高手能指教一二 |
|