#ifndef IDIRECTDRAW_H #define IDIRECTDRAW_H #define WIN32_LEAN_AND_MEAN #include #include "ddraw.h" DEFINE_GUID(IID_IDirectDraw4, 0x9c59509a, 0x39bd, 0x11d1, 0x8c, 0x4a, 0x00, 0xc0, 0x4f, 0xd9, 0x30, 0xc5); DEFINE_GUID(IID_IDirectDraw7, 0x15e65ec0, 0x3b9c, 0x11d2, 0xb9, 0x2f, 0x00, 0x60, 0x97, 0x97, 0xea, 0x5b); typedef BOOL(FAR PASCAL* LPDDENUMCALLBACKEXA)(GUID FAR*, LPSTR, LPSTR, LPVOID, HMONITOR); typedef BOOL(FAR PASCAL* LPDDENUMCALLBACKEXW)(GUID FAR*, LPWSTR, LPWSTR, LPVOID, HMONITOR); extern struct IDirectDrawImplVtbl g_dd_vtbl1; extern struct IDirectDrawImplVtbl g_dd_vtblx; struct IDirectDrawImpl; struct IDirectDrawImplVtbl; typedef struct IDirectDrawImpl { struct IDirectDrawImplVtbl* lpVtbl; ULONG ref; } IDirectDrawImpl; typedef struct IDirectDrawImplVtbl IDirectDrawImplVtbl; struct IDirectDrawImplVtbl { HRESULT(__stdcall* QueryInterface) (IDirectDrawImpl*, const IID* const riid, LPVOID* ppvObj); ULONG(__stdcall* AddRef) (IDirectDrawImpl*); ULONG(__stdcall* Release) (IDirectDrawImpl*); HRESULT(__stdcall* Compact)(IDirectDrawImpl*); HRESULT(__stdcall* CreateClipper)(IDirectDrawImpl*, DWORD, LPDIRECTDRAWCLIPPER*, IUnknown*); HRESULT(__stdcall* CreatePalette)(IDirectDrawImpl*, DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE*, IUnknown*); HRESULT(__stdcall* CreateSurface)(IDirectDrawImpl*, LPDDSURFACEDESC, LPDIRECTDRAWSURFACE*, IUnknown*); HRESULT(__stdcall* DuplicateSurface)(IDirectDrawImpl*, LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE*); HRESULT(__stdcall* EnumDisplayModes)(IDirectDrawImpl*, DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK); HRESULT(__stdcall* EnumSurfaces)(IDirectDrawImpl*, DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMSURFACESCALLBACK); HRESULT(__stdcall* FlipToGDISurface)(IDirectDrawImpl*); HRESULT(__stdcall* GetCaps)(IDirectDrawImpl*, LPDDCAPS, LPDDCAPS); HRESULT(__stdcall* GetDisplayMode)(IDirectDrawImpl*, LPDDSURFACEDESC); HRESULT(__stdcall* GetFourCCCodes)(IDirectDrawImpl*, LPDWORD, LPDWORD); HRESULT(__stdcall* GetGDISurface)(IDirectDrawImpl*, LPDIRECTDRAWSURFACE*); HRESULT(__stdcall* GetMonitorFrequency)(IDirectDrawImpl*, LPDWORD); HRESULT(__stdcall* GetScanLine)(IDirectDrawImpl*, LPDWORD); HRESULT(__stdcall* GetVerticalBlankStatus)(IDirectDrawImpl*, LPBOOL); HRESULT(__stdcall* Initialize)(IDirectDrawImpl*, GUID*); HRESULT(__stdcall* RestoreDisplayMode)(IDirectDrawImpl*); HRESULT(__stdcall* SetCooperativeLevel)(IDirectDrawImpl*, HWND, DWORD); union { LPVOID d; HRESULT(__stdcall* SetDisplayMode)(IDirectDrawImpl*, DWORD, DWORD, DWORD); HRESULT(__stdcall* SetDisplayModeX)(IDirectDrawImpl*, DWORD, DWORD, DWORD, DWORD, DWORD); }; HRESULT(__stdcall* WaitForVerticalBlank)(IDirectDrawImpl*, DWORD, HANDLE); // v2 HRESULT(__stdcall* GetAvailableVidMem)(IDirectDrawImpl*, void*, LPDWORD, LPDWORD); // v4 HRESULT(__stdcall* GetSurfaceFromDC)(IDirectDrawImpl*, HDC, void*); HRESULT(__stdcall* RestoreAllSurfaces)(IDirectDrawImpl*); HRESULT(__stdcall* TestCooperativeLevel)(IDirectDrawImpl*); HRESULT(__stdcall* GetDeviceIdentifier)(IDirectDrawImpl*, void*, DWORD); // v7 HRESULT(__stdcall* StartModeTest)(IDirectDrawImpl*, LPSIZE, DWORD, DWORD); HRESULT(__stdcall* EvaluateMode)(IDirectDrawImpl*, DWORD, DWORD*); }; #endif