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>