G
Guest
Читал на сайте cyberguru.ru "Получение прямого доступа к видеопамяти средствами DirectDraw", списал оттуда весь код, но он не работает (а именно, не хочет создавать поверхность). Вот код программы:
Программа выводит MessageBox и висит. Не знаю, что делать. Помогите, если кто-то знает!
C++:
#include "stdafx.h"
#include <ddraw.h>
#pragma comment (lib, "ddraw.lib")
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
IDirectDraw *dd;
HRESULT hdr = DirectDrawCreate (NULL, &dd, NULL);
dd->SetCooperativeLevel (NULL, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
dd->SetDisplayMode (800, 600, 8);
DDSURFACEDESC desc;
ZeroMemory (&desc, sizeof (DDSURFACEDESC));
desc.dwSize = sizeof (DDSURFACEDESC);
desc.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
desc.dwFlags = DDSD_CAPS;
IDirectDrawSurface *sf;
HRESULT hr = dd->CreateSurface (&desc, &sf, NULL);
if (hr != DD_OK)
MessageBox (0, "Error CreateSurface!", 0, 0);
sf->Lock (NULL, &desc, DDLOCK_WAIT, NULL);
sf->Unlock (desc.lpSurface);
Sleep (1000);
dd->Release ();
return 0;
}