|
本帖最后由 zzx6851963 于 2013-6-21 17:49 编辑
代码入下
if (FAILED(DirectDrawCreateEx(NULL, (void **)&lpdd, IID_IDirectDraw7, NULL))) return 0; desktop = GetDesktopWindow(); HDC hdc= ::GetDC(desktop);
if (FAILED(lpdd->SetCooperativeLevel(desktop,
DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN)))
return 0;
if (FAILED(lpdd->SetDisplayMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, 0, 0))) return 0;
DDRAW_INIT_STRUCT(ddsd);
ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX | DDSCAPS_FLIP; ddsd.dwBackBufferCount = 1;
if (FAILED(lpdd->CreateSurface(&ddsd, &lpddsprimary, NULL)))
return 0;
// 请求一个后备缓冲
ddsd.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER; // 得到后备缓冲
if (FAILED(lpddsprimary->GetAttachedSurface(&ddsd.ddsCaps, &lpddsback)))
return 0;
DDRAW_INIT_STRUCT(ddsd);
if (FAILED(lpddsback ->Lock(NULL,&ddsd, DDLOCK_WAIT,NULL)))
return 0;
BYTE* video_buffer;
video_buffer= (BYTE*)ddsd.lpSurface;
int pos=0;
if (FAILED(lpddsback ->Unlock(NULL)))
return 0;
为什么 ddsd.lpSurface 里的页面数据为0呢 奇怪 我想读取桌面的页面数据
|
|