|
发表于 2004-4-8 20:38:00
|
显示全部楼层
Re:如何获取页面的指针?
//锁定一个表面的一个区域
BOOL g_Lock(IDirectDrawSurface *pdds)
{
DDSURFACEDESC ddsd;
HRESULT hret;
ddsd.dwSize =sizeof(ddsd);
while(1)
{
hret=pdds->Lock(NULL,&ddsd,DDLOCK_WAIT,NULL);
if(hret==DD_OK)
break;
else if(hret==DDERR_SURFACELOST)
{
hret=g_RestoreDDraw();
if(hret!=DD_OK)
return FALSE;
}
}
g_GraphBuffer =(WORD *)ddsd.lpSurface;(表面指针)
g_GraphWidth =ddsd.dwWidth;
g_GraphHeight =ddsd.dwHeight;
g_GraphPitch =ddsd.lPitch>>1; //lPitch 以Byte为单位
//GraphPitch以WORD为单位
return TRUE;
}
//解锁
BOOL g_Unlock(IDirectDrawSurface *pdds)
{
HRESULT hret;
hret=pdds->Unlock(NULL);
if(hret==DD_OK)
return TRUE;
return FALSE;
}
你每次调用g_Lock()来锁定一个表面时,在退出这个函数后,你必须得解锁g_Unlock()//切记! |
|