|
|
IDirectDrawSurface7* srcSurf //这个是系统的显存
现在想改变系统的显示,也就是想修改这个srcsurf,于是我想用blt将另外的复制它上面。
DDSURFACEDESC2 ddsdesc2;
ZeroMemory(&ddsdesc2, sizeof(ddsdesc2));
ddsdesc2.dwSize = sizeof(ddsdesc2);
ddsdesc2.dwFlags = DDSD_CAPS ¦ DDSD_HEIGHT ¦ DDSD_WIDTH ¦ DDSD_PIXELFORMAT;
ddsdesc2.dwWidth =GetSystemMetrics(SM_CXSCREEN);
ddsdesc2.dwHeight =GetSystemMetrics(SM_CYSCREEN);
ddsdesc2.ddpfPixelFormat = g_ddFormat;
g_pDD7- >CreateSurface( &ddsdesc2, &g_tempSurf0, NULL); //创建了另外一个surface
/*
*得到了g_tempSurf0的内容
*/
然后想用blt复制:
if (FAILED(hr=srcSurf- >Blt(NULL,g_tempSurf0,NULL,DDBLT_WAIT, NULL))) {
TRACE("srcsurf..........................errror.%x",hr);
return hr;
}
总是出错。
问题:
1、为什么会出错??
2、而且返回的错误的代号hr是一个数值,但是msdn上的提示的错误返回是一些宏定义:
DDERR_GENERIC
DDERR_INVALIDCLIPLIST
DDERR_INVALIDOBJECT
DDERR_INVALIDPARAMS
DDERR_INVALIDRECT
DDERR_NOALPHAHW
DDERR_NOBLTHW
DDERR_NOCLIPLIST
DDERR_NODDROPSHW
DDERR_NOMIRRORHW
DDERR_NORASTEROPHW
DDERR_NOROTATIONHW
DDERR_NOSTRETCHHW
DDERR_NOZBUFFERHW
DDERR_SURFACEBUSY
DDERR_SURFACELOST
DDERR_UNSUPPORTED
DDERR_WASSTILLDRAWING
但是我并不知道这些字符串是对应哪个返回的错误的数值的,
我怎么通过这个返回的错误代号的数值对应上是哪个错误???
谢谢!~
|
|