A simple test app for DirectDraw.
Added: trunk/rosapps/demos/ddraw/
Added: trunk/rosapps/demos/ddraw/ddraw.xml
Added: trunk/rosapps/demos/ddraw/main.cpp
Added: trunk/rosapps/demos/ddraw/main.h
Modified: trunk/rosapps/demos/directory.xml

Added: trunk/rosapps/demos/ddraw/ddraw.xml
--- trunk/rosapps/demos/ddraw/ddraw.xml	2005-08-07 10:08:25 UTC (rev 17154)
+++ trunk/rosapps/demos/ddraw/ddraw.xml	2005-08-07 10:13:46 UTC (rev 17155)
@@ -0,0 +1,13 @@
+<module name="ddraw_demo" type="win32gui" installbase="system32" installname="ddraw.exe">
+	<define name="_WIN32_IE">0x0501</define>
+	<define name="_WIN32_WINNT">0x0501</define>
+	<define name="__USE_W32API" />
+
+	<library>kernel32</library>
+	<library>gdi32</library>
+	<library>ddraw</library>
+	<library>dxguid</library>
+	<library>string</library>
+
+	<file>main.cpp</file>
+</module>
\ No newline at end of file

Added: trunk/rosapps/demos/ddraw/main.cpp
--- trunk/rosapps/demos/ddraw/main.cpp	2005-08-07 10:08:25 UTC (rev 17154)
+++ trunk/rosapps/demos/ddraw/main.cpp	2005-08-07 10:13:46 UTC (rev 17155)
@@ -0,0 +1,303 @@
+#include <windows.h>
+#include <ddraw.h>
+#include "main.h"
+
+
+bool Init (void)
+{
+	DDSURFACEDESC2			ddsd; 
+
+	// Create the main object
+	OutputDebugString("=> DirectDrawCreateEx\n");
+	ddrval = DirectDrawCreateEx(NULL, (VOID**)&pDD, IID_IDirectDraw7, NULL); 
+
+	if (ddrval != DD_OK)
+	{
+		MessageBox(0,DDErrorString(ddrval), "DirectDrawCreateEx", 0);
+		return 0;
+	}
+
+	// set fullscreen or not
+	OutputDebugString("=> DDraw->SetCooperativeLevel\n");
+
+	if(fullscreen)
+		ddrval = pDD->SetCooperativeLevel (hwnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
+	else
+		ddrval = pDD->SetCooperativeLevel (hwnd, DDSCL_NORMAL);
+		
+	if (ddrval != DD_OK)
+	{
+		MessageBox(0,DDErrorString(ddrval), "DDraw->SetCooperativeLevel", 0);
+		return 0;
+	}
+
+	// set the  new resolution
+	if(fullscreen)
+	{
+		OutputDebugString("=> DDraw->SetDisplayMode\n");
+		ddrval = pDD->SetDisplayMode (800, 600, 32, 0, 0);
+			
+		if (ddrval != DD_OK)
+		{
+			MessageBox(0,DDErrorString(ddrval), "DDraw->SetDisplayMode", 0);
+			return 0;
+		}
+	}
+
+	// create the primary surface
+	memset(&ddsd, 0, sizeof(DDSURFACEDESC2));
+
+	ddsd.dwSize = sizeof(DDSURFACEDESC2);
+	ddsd.dwFlags = DDSD_CAPS;
+	ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
+
+	OutputDebugString("=> DDraw->CreateSurface\n");
+	ddrval = pDD->CreateSurface(&ddsd, &lpddsPrimary, NULL);
+
+	if (ddrval != DD_OK)
+	{
+		MessageBox(0,DDErrorString(ddrval), "DDraw->CreateSurface", 0);
+		return 0;
+	}
+
+	return true;
+}
+
+void Draw (void)
+{
+	// make the windows or hole screen green
+	RECT rect;
+	GetWindowRect(hwnd, &rect);     
+
+	DDBLTFX	 ddbltfx;
+	ddbltfx.dwSize = sizeof(DDBLTFX);
+	ddbltfx.dwFillColor = RGB(0, 255, 0); 
+
+	OutputDebugString("=> Surface->Blt (DDBLT_COLORFILL)\n");
+
+	if(fullscreen)
+		lpddsPrimary->Blt(NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx);
+	else
+		lpddsPrimary->Blt(&rect, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx);
+}
+
+void CleanUp (void)
+{
+	if (lpddsPrimary != NULL)
+	{
+		OutputDebugString("=> Surface->Release\n");
+		lpddsPrimary->Release();
+		lpddsPrimary = NULL;
+	}
+
+	if (pDD != NULL)
+	{
+		OutputDebugString("=> DDraw->Release\n");
+		pDD->Release();
+		pDD = NULL;
+	}
+}
+
+int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst, 
+					LPSTR lpCmdLine, int nCmdShow)
+{
+	MSG msg;  
+	WNDCLASS wndclass; 
+
+	// ask
+	fullscreen = MessageBox(0, "Do you want to me to run in fullscreen ?", 0, MB_YESNO) == IDYES;
+
+	// create windnow
+	wndclass.style         = CS_HREDRAW | CS_VREDRAW; 
+	wndclass.lpfnWndProc   = WndProc;
+	wndclass.cbClsExtra    = 0;
+	wndclass.cbWndExtra    = 0;
+	wndclass.hInstance     = hInst;
+	wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION);
+	wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW); 
+	wndclass.hbrBackground = (HBRUSH)GetStockObject (LTGRAY_BRUSH);
+	wndclass.lpszMenuName  = NULL;
+	wndclass.lpszClassName = "ddrawdemo"; 
+
+	RegisterClass(&wndclass);    
+
+	hwnd = CreateWindow("ddrawdemo", 
+                         "ReactOS DirectDraw Demo", 
+						 WS_POPUP, 
+			             CW_USEDEFAULT, 
+						 CW_USEDEFAULT,
+                         800, 
+                         600,     
+                         NULL, NULL, 
+						 hInst, NULL);
+
+	// Inizalize Ddraw
+	if(Init())
+	{
+		running = true;
+
+		ShowWindow(hwnd, nCmdShow);  
+		UpdateWindow(hwnd);
+	}
+    
+	// Go into main loop
+	while (running)
+	{
+		if(fullscreen)
+			Draw();
+
+		if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
+		{ 
+			if (msg.message == WM_QUIT) break;
+			TranslateMessage(&msg);
+			DispatchMessage(&msg);
+		}
+	} 
+
+	// the end
+	CleanUp();
+
+	return 0;
+}
+
+
+LONG WINAPI WndProc (HWND hwnd, UINT message, 
+                         UINT wParam, LONG lParam) 
+{ 
+	switch (message)
+	{
+		case WM_PAINT:
+		{
+			if(!fullscreen)
+				Draw();
+		} break;
+
+		case WM_KEYDOWN:
+		{
+			switch (wParam)
+			{
+			case VK_ESCAPE:
+				running=false;
+				return 0;
+			} break;
+		}
+
+		case WM_DESTROY:
+		{
+			PostQuitMessage (0); 
+			return 0;
+		} break;
+	}
+
+	return DefWindowProc (hwnd, message, wParam, lParam);
+} 
+
+char* DDErrorString (HRESULT hr)
+{
+	switch (hr)
+	{
+		case DD_OK:								 return "DD_OK";
+		case DDERR_ALREADYINITIALIZED:           return "DDERR_ALREADYINITIALIZED";
+		case DDERR_CANNOTATTACHSURFACE:          return "DDERR_CANNOTATTACHSURFACE";
+		case DDERR_CANNOTDETACHSURFACE:          return "DDERR_CANNOTDETACHSURFACE";
+		case DDERR_CURRENTLYNOTAVAIL:            return "DDERR_CURRENTLYNOTAVAIL";
+		case DDERR_EXCEPTION:                    return "DDERR_EXCEPTION";
+		case DDERR_GENERIC:                      return "DDERR_GENERIC";
+		case DDERR_HEIGHTALIGN:                  return "DDERR_HEIGHTALIGN";
+		case DDERR_INCOMPATIBLEPRIMARY:          return "DDERR_INCOMPATIBLEPRIMARY";
+		case DDERR_INVALIDCAPS:                  return "DDERR_INVALIDCAPS";
+		case DDERR_INVALIDCLIPLIST:              return "DDERR_INVALIDCLIPLIST";
+		case DDERR_INVALIDMODE:                  return "DDERR_INVALIDMODE";
+		case DDERR_INVALIDOBJECT:                return "DDERR_INVALIDOBJECT";
+		case DDERR_INVALIDPARAMS:                return "DDERR_INVALIDPARAMS";
+		case DDERR_INVALIDPIXELFORMAT:           return "DDERR_INVALIDPIXELFORMAT";
+		case DDERR_INVALIDRECT:                  return "DDERR_INVALIDRECT";
+		case DDERR_LOCKEDSURFACES:               return "DDERR_LOCKEDSURFACES";
+		case DDERR_NO3D:                         return "DDERR_NO3D";
+		case DDERR_NOALPHAHW:                    return "DDERR_NOALPHAHW";
+		case DDERR_NOCLIPLIST:                   return "DDERR_NOCLIPLIST";
+		case DDERR_NOCOLORCONVHW:                return "DDERR_NOCOLORCONVHW";
+		case DDERR_NOCOOPERATIVELEVELSET:        return "DDERR_NOCOOPERATIVELEVELSET";
+		case DDERR_NOCOLORKEY:                   return "DDERR_NOCOLORKEY";
+		case DDERR_NOCOLORKEYHW:                 return "DDERR_NOCOLORKEYHW";
+		case DDERR_NODIRECTDRAWSUPPORT:          return "DDERR_NODIRECTDRAWSUPPORT";
+		case DDERR_NOEXCLUSIVEMODE:              return "DDERR_NOEXCLUSIVEMODE";
+		case DDERR_NOFLIPHW:                     return "DDERR_NOFLIPHW";
+		case DDERR_NOGDI:                        return "DDERR_NOGDI";
+		case DDERR_NOMIRRORHW:                   return "DDERR_NOMIRRORHW";
+		case DDERR_NOTFOUND:                     return "DDERR_NOTFOUND";
+		case DDERR_NOOVERLAYHW:                  return "DDERR_NOOVERLAYHW";
+		case DDERR_NORASTEROPHW:                 return "DDERR_NORASTEROPHW";
+		case DDERR_NOROTATIONHW:                 return "DDERR_NOROTATIONHW";
+		case DDERR_NOSTRETCHHW:                  return "DDERR_NOSTRETCHHW";
+		case DDERR_NOT4BITCOLOR:                 return "DDERR_NOT4BITCOLOR";
+		case DDERR_NOT4BITCOLORINDEX:            return "DDERR_NOT4BITCOLORINDEX";
+		case DDERR_NOT8BITCOLOR:                 return "DDERR_NOT8BITCOLOR";
+		case DDERR_NOTEXTUREHW:                  return "DDERR_NOTEXTUREHW";
+		case DDERR_NOVSYNCHW:                    return "DDERR_NOVSYNCHW";
+		case DDERR_NOZBUFFERHW:                  return "DDERR_NOZBUFFERHW";
+		case DDERR_NOZOVERLAYHW:                 return "DDERR_NOZOVERLAYHW";
+		case DDERR_OUTOFCAPS:                    return "DDERR_OUTOFCAPS";
+		case DDERR_OUTOFMEMORY:                  return "DDERR_OUTOFMEMORY";
+		case DDERR_OUTOFVIDEOMEMORY:             return "DDERR_OUTOFVIDEOMEMORY";
+		case DDERR_OVERLAYCANTCLIP:              return "DDERR_OVERLAYCANTCLIP";
+		case DDERR_OVERLAYCOLORKEYONLYONEACTIVE: return "DDERR_OVERLAYCOLORKEYONLYONEACTIVE";
+		case DDERR_PALETTEBUSY:                  return "DDERR_PALETTEBUSY";
+		case DDERR_COLORKEYNOTSET:               return "DDERR_COLORKEYNOTSET";
+		case DDERR_SURFACEALREADYATTACHED:       return "DDERR_SURFACEALREADYATTACHED";
+		case DDERR_SURFACEALREADYDEPENDENT:      return "DDERR_SURFACEALREADYDEPENDENT";
+		case DDERR_SURFACEBUSY:                  return "DDERR_SURFACEBUSY";
+		case DDERR_CANTLOCKSURFACE:              return "DDERR_CANTLOCKSURFACE";
+		case DDERR_SURFACEISOBSCURED:            return "DDERR_SURFACEISOBSCURED";
+		case DDERR_SURFACELOST:                  return "DDERR_SURFACELOST";
+		case DDERR_SURFACENOTATTACHED:           return "DDERR_SURFACENOTATTACHED";
+		case DDERR_TOOBIGHEIGHT:                 return "DDERR_TOOBIGHEIGHT";
+		case DDERR_TOOBIGSIZE:                   return "DDERR_TOOBIGSIZE";
+		case DDERR_TOOBIGWIDTH:                  return "DDERR_TOOBIGWIDTH";
+		case DDERR_UNSUPPORTED:                  return "DDERR_UNSUPPORTED";
+		case DDERR_UNSUPPORTEDFORMAT:            return "DDERR_UNSUPPORTEDFORMAT";
+		case DDERR_UNSUPPORTEDMASK:              return "DDERR_UNSUPPORTEDMASK";
+		case DDERR_VERTICALBLANKINPROGRESS:      return "DDERR_VERTICALBLANKINPROGRESS";
+		case DDERR_WASSTILLDRAWING:              return "DDERR_WASSTILLDRAWING";
+		case DDERR_XALIGN:                       return "DDERR_XALIGN";
+		case DDERR_INVALIDDIRECTDRAWGUID:        return "DDERR_INVALIDDIRECTDRAWGUID";
+		case DDERR_DIRECTDRAWALREADYCREATED:     return "DDERR_DIRECTDRAWALREADYCREATED";
+		case DDERR_NODIRECTDRAWHW:               return "DDERR_NODIRECTDRAWHW";
+		case DDERR_PRIMARYSURFACEALREADYEXISTS:  return "DDERR_PRIMARYSURFACEALREADYEXISTS";
+		case DDERR_NOEMULATION:                  return "DDERR_NOEMULATION";
+		case DDERR_REGIONTOOSMALL:               return "DDERR_REGIONTOOSMALL";
+		case DDERR_CLIPPERISUSINGHWND:           return "DDERR_CLIPPERISUSINGHWND";
+		case DDERR_NOCLIPPERATTACHED:            return "DDERR_NOCLIPPERATTACHED";
+		case DDERR_NOHWND:                       return "DDERR_NOHWND";
+		case DDERR_HWNDSUBCLASSED:               return "DDERR_HWNDSUBCLASSED";
+		case DDERR_HWNDALREADYSET:               return "DDERR_HWNDALREADYSET";
+		case DDERR_NOPALETTEATTACHED:            return "DDERR_NOPALETTEATTACHED";
+		case DDERR_NOPALETTEHW:                  return "DDERR_NOPALETTEHW";
+		case DDERR_BLTFASTCANTCLIP:              return "DDERR_BLTFASTCANTCLIP";
+		case DDERR_NOBLTHW:                      return "DDERR_NOBLTHW";
+		case DDERR_NODDROPSHW:                   return "DDERR_NODDROPSHW";
+		case DDERR_OVERLAYNOTVISIBLE:            return "DDERR_OVERLAYNOTVISIBLE";
+		case DDERR_NOOVERLAYDEST:                return "DDERR_NOOVERLAYDEST";
+		case DDERR_INVALIDPOSITION:              return "DDERR_INVALIDPOSITION";
+		case DDERR_NOTAOVERLAYSURFACE:           return "DDERR_NOTAOVERLAYSURFACE";
+		case DDERR_EXCLUSIVEMODEALREADYSET:      return "DDERR_EXCLUSIVEMODEALREADYSET";
+		case DDERR_NOTFLIPPABLE:                 return "DDERR_NOTFLIPPABLE";
+		case DDERR_CANTDUPLICATE:                return "DDERR_CANTDUPLICATE";
+		case DDERR_NOTLOCKED:                    return "DDERR_NOTLOCKED";
+		case DDERR_CANTCREATEDC:                 return "DDERR_CANTCREATEDC";
+		case DDERR_NODC:                         return "DDERR_NODC";
+		case DDERR_WRONGMODE:                    return "DDERR_WRONGMODE";
+		case DDERR_IMPLICITLYCREATED:            return "DDERR_IMPLICITLYCREATED";
+		case DDERR_NOTPALETTIZED:                return "DDERR_NOTPALETTIZED";
+		case DDERR_UNSUPPORTEDMODE:              return "DDERR_UNSUPPORTEDMODE";
+		case DDERR_NOMIPMAPHW:                   return "DDERR_NOMIPMAPHW";
+		case DDERR_INVALIDSURFACETYPE:           return "DDERR_INVALIDSURFACETYPE";
+		case DDERR_DCALREADYCREATED:             return "DDERR_DCALREADYCREATED";
+		case DDERR_CANTPAGELOCK:                 return "DDERR_CANTPAGELOCK";
+		case DDERR_CANTPAGEUNLOCK:               return "DDERR_CANTPAGEUNLOCK";
+		case DDERR_NOTPAGELOCKED:                return "DDERR_NOTPAGELOCKED";
+		case DDERR_NOTINITIALIZED:               return "DDERR_NOTINITIALIZED";
+	}
+	return "Unknown Error";
+}
+
Property changes on: trunk/rosapps/demos/ddraw/main.cpp
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: trunk/rosapps/demos/ddraw/main.h
--- trunk/rosapps/demos/ddraw/main.h	2005-08-07 10:08:25 UTC (rev 17154)
+++ trunk/rosapps/demos/ddraw/main.h	2005-08-07 10:13:46 UTC (rev 17155)
@@ -0,0 +1,13 @@
+
+LPDIRECTDRAW7 pDD;
+LPDIRECTDRAWSURFACE7 lpddsPrimary; //, lpddsBack;
+HRESULT ddrval;
+HWND hwnd;
+
+bool running, fullscreen;
+
+void ddRelease ();
+char* DDErrorString (HRESULT hr);
+LONG WINAPI WndProc (HWND hwnd, UINT message, UINT wParam, LONG lParam);
+
+extern "C" bool HookAPICalls();
Property changes on: trunk/rosapps/demos/ddraw/main.h
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Modified: trunk/rosapps/demos/directory.xml
--- trunk/rosapps/demos/directory.xml	2005-08-07 10:08:25 UTC (rev 17154)
+++ trunk/rosapps/demos/directory.xml	2005-08-07 10:13:46 UTC (rev 17155)
@@ -1,3 +1,7 @@
 <directory name="maze">
 	<xi:include href="maze/maze.xml" />
-</directory>
\ No newline at end of file
+</directory>
+
+<directory name="ddraw">
+	<xi:include href="ddraw/ddraw.xml" />
+</directory>