--- 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
--- 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
--- 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
--- 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>