|
|
我的程序是在窗口模式下运行的
刚开始还可以Blt
我移动窗口后就出问题了
HRESULT hres得到的是非常大的负数
谁能告诉我这是什么原因啊
int LoopGame()
{
static bool closed = false;
static bool alternate = true;
DDSURFACEDESC2 ddsd;
LPDIRECTDRAWSURFACE7 lpdds1;
LPDIRECTDRAWSURFACE7 lpdds2;
LPDIRECTDRAWSURFACE7 lpdds3;
if (closed)
return 1;
if (KEYDOWN(VK_ESCAPE))
{
SendMessage(main_window_handle, WM_CLOSE, 0, 0);
closed = true;
return 1;
}
if (g_through)
{
g_through = false;
DDRAW_INIT_STRUCT(ddsd);
RECT rect = {0, 0, 800, 600};
GetWindowRect(main_window_handle, &rect);
cell1.GetSurface(lpdds1);
cell2.GetSurface(lpdds2);
cell3.GetSurface(lpdds3);
DDBLTFX ddbltfx;
DDRAW_INIT_STRUCT(ddbltfx);
ddbltfx.ddckDestColorkey.dwColorSpaceLowValue = 0x00ffffff;
ddbltfx.ddckDestColorkey.dwColorSpaceHighValue = 0x00ffffff;
HRESULT hres;
if (alternate)
{
hres = lpdds1->Blt(&rect, lpdds3, &rect, DDBLT_WAIT, &ddbltfx);
if (hres == DDERR_SURFACELOST)
return 0;
alternate = false;
}
else
{
hres = lpdds1->Blt(&rect, lpdds2, &rect, DDBLT_WAIT, NULL);
if (hres == DDERR_SURFACELOST)
return 0;
alternate = true;
}
if (FAILED(lpddsprimary->Blt(&rect, lpdds1, &rect, DDBLT_WAIT, NULL)))
return 0;
}
return 1;
} |
|