1 #include "ddrawtest.h"
2 
3 LRESULT WINAPI BasicWindowProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
4 {
5 	switch (message)
6 	{
7 		case WM_DESTROY:
8 		{
9 			PostQuitMessage (0);
10 			return 0;
11 		} break;
12 	}
13 
14 	return DefWindowProc (hwnd, message, wParam, lParam);
15 }
16 
17 HWND CreateBasicWindow (VOID)
18 {
19 	WNDCLASS wndclass = {0};
20 	wndclass.lpfnWndProc   = BasicWindowProc;
21 	wndclass.hInstance     = GetModuleHandle(NULL);
22 	wndclass.lpszClassName = "DDrawTest";
23 	RegisterClass(&wndclass);
24 
25 	return CreateWindow("DDrawTest", "ReactOS DirectDraw Test", WS_POPUP, 0, 0, 10, 10, NULL, NULL, GetModuleHandle(NULL), NULL);
26 }
27 
28 BOOL CreateSurface(LPDIRECTDRAWSURFACE7* pSurface)
29 {
30 	LPDIRECTDRAW7 DirectDraw;
31 	LPDIRECTDRAWSURFACE7 Surface;
32     HWND hwnd;
33 
34 	// Create DDraw Object
35 	if (DirectDrawCreateEx(NULL, (VOID**)&DirectDraw, IID_IDirectDraw7, NULL) != DD_OK)
36 	{
37 		printf("ERROR: Failed to set up ddraw\n");
38 		return FALSE;
39 	}
40 
41 	if(!( hwnd = CreateBasicWindow() ))
42 	{
43 		printf("ERROR: Failed to create window\n");
44 		DirectDraw->Release();
45 		return FALSE;
46 	}
47 
48 	if (DirectDraw->SetCooperativeLevel (hwnd, DDSCL_NORMAL) != DD_OK)
49 	{
50 		printf("ERROR: Could not set cooperative level\n");
51 		DirectDraw->Release();
52 		return 0;
53 	}
54 
55     // Creat Surface
56 	DDSURFACEDESC2 Desc = { 0 };
57 	Desc.dwHeight = 200;
58 	Desc.dwWidth = 200;
59     Desc.dwSize = sizeof (DDSURFACEDESC2);
60     Desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
61 	Desc.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
62 
63     if(DirectDraw->CreateSurface(&Desc, &Surface, NULL) != DD_OK)
64     {
65         printf("ERROR: Faild to create Surface\n");
66         return FALSE;
67     }
68 
69     DirectDraw->Release();
70 
71     *pSurface = Surface;
72     return TRUE;
73 }
74