19,468
社区成员
发帖
与我相关
我的任务
分享
if (FAILED(DirectDrawCreateEx(NULL, (void **)&g_lpDDraw, IID_IDirectDraw7, NULL)))
{
AfxMessageBox("Create DirectDraw failed!");
return;
}
g_lpDDraw->SetCooperativeLevel(GetDlgItem(IDC_PLAYWND)->m_hWnd, DDSCL_NORMAL);
DDSURFACEDESC2 ddsd;
memset(&ddsd, 0, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
if (FAILED(g_lpDDraw->CreateSurface(&ddsd, &g_lpDDSurfacePrimary, NULL)))
{
AfxMessageBox("Create Primary Surface failed!");
_close(g_fdread);
g_fdread = -1;
g_lpDDraw->Release();
g_lpDDraw = NULL;
return;
}
DDPIXELFORMAT ddpf;
memset(&ddpf, 0, sizeof(ddpf));
ddpf.dwSize = sizeof(ddpf);
g_lpDDSurfacePrimary->GetPixelFormat(&ddpf);
ddpf.dwFlags = DDPF_FOURCC;
ddpf.dwFourCC = mmioFOURCC('I', '4', '2', '0');
memset(&ddsd, 0, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY;
ddsd.dwHeight = 288;
ddsd.dwWidth = 352;
ddsd.ddpfPixelFormat = ddpf;
if (FAILED(g_lpDDraw->CreateSurface(&ddsd, &g_lpDDSurfaceOffscreen, NULL))) //这里就会失败
{
AfxMessageBox("Create offscreen Surface failed!");
}