home *** CD-ROM | disk | FTP | other *** search
/ Total Destruction / Total_Destruction.iso / addons / Lccwin32.exe / Lccwin32 / lccpub / include / ddraw.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-18  |  42.0 KB  |  954 lines

  1. #ifndef __DDRAW_INCLUDED__
  2. #define __DDRAW_INCLUDED__
  3. #include <objbase.h>
  4.  
  5. #define _FACDD    0x876
  6. #define MAKE_DDHRESULT( code )    MAKE_HRESULT( 1, _FACDD, code )
  7.  
  8. #if defined( _WIN32 ) && !defined( _NO_COM )
  9. DEFINE_GUID( CLSID_DirectDraw,            0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x,0x20,0xAF,0xC2,0xCD,0x35 );
  10. DEFINE_GUID( CLSID_DirectDrawClipper,   0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x,0xAA,0x,0xb9,0x33,0x56 );
  11. DEFINE_GUID( IID_IDirectDraw,            0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x,0x20,0xAF,0xB,0xE5,0x60 );
  12. DEFINE_GUID( IID_IDirectDraw2,  0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x,0xAA,0x,0xB9,0x33,0x56 );
  13. DEFINE_GUID( IID_IDirectDrawSurface,        0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x,0x20,0xAF,0xB,0xE5,0x60 );
  14. DEFINE_GUID( IID_IDirectDrawSurface2,        0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x3,0xc1,0x0e,0x27 );
  15.  
  16. DEFINE_GUID( IID_IDirectDrawPalette,        0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x,0x20,0xAF,0xB,0xE5,0x60 );
  17. DEFINE_GUID( IID_IDirectDrawClipper,        0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x,0x20,0xAF,0xB,0xE5,0x60 );
  18.  
  19. #endif
  20.  
  21. struct IDirectDraw;
  22. struct IDirectDrawSurface;
  23. struct IDirectDrawPalette;
  24. struct IDirectDrawClipper;
  25. typedef struct IDirectDraw            FAR *LPDIRECTDRAW;
  26. typedef struct IDirectDraw2            FAR *LPDIRECTDRAW2;
  27. typedef struct IDirectDrawSurface        FAR *LPDIRECTDRAWSURFACE;
  28. typedef struct IDirectDrawSurface2        FAR *LPDIRECTDRAWSURFACE2;
  29. typedef struct IDirectDrawPalette        FAR *LPDIRECTDRAWPALETTE;
  30. typedef struct IDirectDrawClipper        FAR *LPDIRECTDRAWCLIPPER;
  31. typedef struct _DDFXROP            FAR *LPDDFXROP;
  32. typedef struct _DDSURFACEDESC        FAR *LPDDSURFACEDESC;
  33. typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKA)(GUID FAR *, LPSTR, LPSTR, LPVOID);
  34. typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID);
  35. extern HRESULT WINAPI DirectDrawEnumerateW( LPDDENUMCALLBACKW lpCallback, LPVOID lpContext );
  36. extern HRESULT WINAPI DirectDrawEnumerateA( LPDDENUMCALLBACKA lpCallback, LPVOID lpContext );
  37. #ifdef UNICODE
  38. typedef LPDDENUMCALLBACKW     LPDDENUMCALLBACK;
  39. #define DirectDrawEnumerate    DirectDrawEnumerateW
  40. #else
  41. typedef LPDDENUMCALLBACKA     LPDDENUMCALLBACK;
  42. #define DirectDrawEnumerate    DirectDrawEnumerateA
  43. #endif
  44. extern HRESULT WINAPI DirectDrawCreate( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter );
  45. extern HRESULT WINAPI DirectDrawCreateClipper( DWORD dwFlags, LPDIRECTDRAWCLIPPER FAR *lplpDDClipper, IUnknown FAR *pUnkOuter );
  46. extern HRESULT NtDirectDrawCreate( GUID FAR *lpGUID, HANDLE *lplpDD, IUnknown FAR *pUnkOuter );
  47. #define REGSTR_KEY_DDHW_DESCRIPTION    "Description"
  48. #define REGSTR_KEY_DDHW_DRIVERNAME    "DriverName"
  49. #define REGSTR_PATH_DDHW        "Hardware\\DirectDrawDrivers"
  50. #define DDCREATE_HARDWAREONLY        1
  51. #define DDCREATE_EMULATIONONLY        2
  52. #ifdef WINNT
  53. typedef long HRESULT;
  54. #endif
  55.  
  56. typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID);
  57. typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID);
  58. typedef struct _DDCOLORKEY {
  59.     DWORD    dwColorSpaceLowValue;    
  60.                     
  61.     DWORD    dwColorSpaceHighValue;    
  62.                     
  63. } DDCOLORKEY;
  64. typedef DDCOLORKEY FAR* LPDDCOLORKEY;
  65. typedef struct _DDBLTFX {
  66.     DWORD    dwSize;                
  67.     DWORD    dwDDFX;                
  68.     DWORD    dwROP;                
  69.     DWORD    dwDDROP;            
  70.     DWORD    dwRotationAngle;        
  71.     DWORD    dwZBufferOpCode;        
  72.     DWORD    dwZBufferLow;            
  73.     DWORD    dwZBufferHigh;            
  74.     DWORD    dwZBufferBaseDest;        
  75.     DWORD    dwZDestConstBitDepth;        
  76.     union {
  77.     DWORD    dwZDestConst;            
  78.     LPDIRECTDRAWSURFACE lpDDSZBufferDest;    
  79.     };
  80.     DWORD    dwZSrcConstBitDepth;        
  81.     union {
  82.     DWORD    dwZSrcConst;            
  83.     LPDIRECTDRAWSURFACE lpDDSZBufferSrc;    
  84.     };
  85.     DWORD    dwAlphaEdgeBlendBitDepth;    
  86.     DWORD    dwAlphaEdgeBlend;        
  87.     DWORD    dwReserved;
  88.     DWORD    dwAlphaDestConstBitDepth;    
  89.     union
  90.     {
  91.     DWORD    dwAlphaDestConst;        
  92.     LPDIRECTDRAWSURFACE lpDDSAlphaDest;    
  93.     };
  94.     DWORD    dwAlphaSrcConstBitDepth;    
  95.     union
  96.     {
  97.     DWORD    dwAlphaSrcConst;        
  98.     LPDIRECTDRAWSURFACE lpDDSAlphaSrc;    
  99.     };
  100.     union
  101.     {
  102.     DWORD    dwFillColor;            
  103.     DWORD   dwFillDepth;    
  104.     LPDIRECTDRAWSURFACE lpDDSPattern;    
  105.     };
  106.     DDCOLORKEY    ddckDestColorkey;        
  107.     DDCOLORKEY    ddckSrcColorkey;        
  108. } DDBLTFX;
  109. typedef DDBLTFX FAR* LPDDBLTFX;
  110. typedef struct _DDSCAPS { DWORD    dwCaps;    } DDSCAPS;
  111. typedef DDSCAPS FAR* LPDDSCAPS; 
  112. #define DD_ROP_SPACE        (256/32)    
  113. typedef struct _DDCAPS {
  114.     DWORD    dwSize;            
  115.     DWORD    dwCaps;            
  116.     DWORD    dwCaps2;        
  117.     DWORD    dwCKeyCaps;        
  118.     DWORD    dwFXCaps;        
  119.     DWORD    dwFXAlphaCaps;        
  120.     DWORD    dwPalCaps;        
  121.     DWORD    dwSVCaps;        
  122.     DWORD    dwAlphaBltConstBitDepths;    
  123.     DWORD    dwAlphaBltPixelBitDepths;    
  124.     DWORD    dwAlphaBltSurfaceBitDepths;    
  125.     DWORD    dwAlphaOverlayConstBitDepths;    
  126.     DWORD    dwAlphaOverlayPixelBitDepths;    
  127.     DWORD    dwAlphaOverlaySurfaceBitDepths; 
  128.     DWORD    dwZBufferBitDepths;        
  129.     DWORD    dwVidMemTotal;        
  130.     DWORD    dwVidMemFree;        
  131.     DWORD    dwMaxVisibleOverlays;    
  132.     DWORD    dwCurrVisibleOverlays;    
  133.     DWORD    dwNumFourCCCodes;    
  134.     DWORD    dwAlignBoundarySrc;    
  135.     DWORD    dwAlignSizeSrc;        
  136.     DWORD    dwAlignBoundaryDest;    
  137.     DWORD    dwAlignSizeDest;    
  138.     DWORD    dwAlignStrideAlign;    
  139.     DWORD    dwRops[DD_ROP_SPACE];    
  140.     DDSCAPS    ddsCaps;        
  141.     DWORD    dwMinOverlayStretch;    
  142.     DWORD    dwMaxOverlayStretch;    
  143.     DWORD    dwMinLiveVideoStretch;    
  144.     DWORD    dwMaxLiveVideoStretch;    
  145.     DWORD    dwMinHwCodecStretch;    
  146.     DWORD    dwMaxHwCodecStretch;    
  147.     DWORD    dwReserved1;        
  148.     DWORD    dwReserved2;        
  149.     DWORD    dwReserved3;        
  150.     DWORD    dwSVBCaps;        
  151.     DWORD    dwSVBCKeyCaps;        
  152.     DWORD    dwSVBFXCaps;        
  153.     DWORD    dwSVBRops[DD_ROP_SPACE];
  154.     DWORD    dwVSBCaps;        
  155.     DWORD    dwVSBCKeyCaps;        
  156.     DWORD    dwVSBFXCaps;        
  157.     DWORD    dwVSBRops[DD_ROP_SPACE];
  158.     DWORD    dwSSBCaps;        
  159.     DWORD    dwSSBCKeyCaps;        
  160.     DWORD    dwSSBFXCaps;        
  161.     DWORD    dwSSBRops[DD_ROP_SPACE];
  162.     DWORD    dwReserved4;        
  163.     DWORD    dwReserved5;        
  164.     DWORD    dwReserved6;        
  165. } DDCAPS;
  166.  
  167. typedef DDCAPS FAR* LPDDCAPS;
  168. typedef struct _DDPIXELFORMAT
  169. {
  170.     DWORD    dwSize;            
  171.     DWORD    dwFlags;        
  172.     DWORD    dwFourCC;        
  173.     union
  174.     {
  175.     DWORD    dwRGBBitCount;        
  176.     DWORD    dwYUVBitCount;        
  177.     DWORD    dwZBufferBitDepth;    
  178.     DWORD    dwAlphaBitDepth;    
  179.     };
  180.     union
  181.     {
  182.     DWORD    dwRBitMask;        
  183.     DWORD    dwYBitMask;        
  184.     };
  185.     union
  186.     {
  187.     DWORD    dwGBitMask;        
  188.     DWORD    dwUBitMask;        
  189.     };
  190.     union
  191.     {
  192.     DWORD    dwBBitMask;        
  193.     DWORD    dwVBitMask;        
  194.     };
  195.     union
  196.     {
  197.     DWORD    dwRGBAlphaBitMask;    
  198.     DWORD    dwYUVAlphaBitMask;    
  199.     };
  200. } DDPIXELFORMAT;
  201. typedef DDPIXELFORMAT FAR* LPDDPIXELFORMAT;
  202. typedef struct _DDOVERLAYFX {
  203.     DWORD    dwSize;                
  204.     DWORD    dwAlphaEdgeBlendBitDepth;    
  205.     DWORD    dwAlphaEdgeBlend;        
  206.     DWORD    dwReserved;
  207.     DWORD    dwAlphaDestConstBitDepth;    
  208.     union
  209.     {
  210.     DWORD    dwAlphaDestConst;        
  211.     LPDIRECTDRAWSURFACE lpDDSAlphaDest;    
  212.     };
  213.     DWORD    dwAlphaSrcConstBitDepth;    
  214.     union
  215.     {
  216.     DWORD    dwAlphaSrcConst;        
  217.     LPDIRECTDRAWSURFACE lpDDSAlphaSrc;    
  218.     };
  219.     DDCOLORKEY    dckDestColorkey;        
  220.     DDCOLORKEY    dckSrcColorkey;            
  221.     DWORD   dwDDFX;             
  222.     DWORD    dwFlags;            
  223. } DDOVERLAYFX;
  224. typedef DDOVERLAYFX FAR *LPDDOVERLAYFX;
  225. typedef struct _DDBLTBATCH {
  226.     LPRECT        lprDest;
  227.     LPDIRECTDRAWSURFACE    lpDDSSrc;
  228.     LPRECT        lprSrc;
  229.     DWORD        dwFlags;
  230.     LPDDBLTFX        lpDDBltFx;
  231. } DDBLTBATCH;
  232.  
  233. typedef DDBLTBATCH FAR * LPDDBLTBATCH;
  234. typedef DWORD    (FAR PASCAL *LPCLIPPERCALLBACK)(LPDIRECTDRAWCLIPPER lpDDClipper, HWND hWnd, DWORD code, LPVOID lpContext );
  235. #ifdef STREAMING
  236. typedef DWORD    (FAR PASCAL *LPSURFACESTREAMINGCALLBACK)(DWORD);
  237. #endif
  238. #if defined( _WIN32 ) && !defined( _NO_COM )
  239. #undef INTERFACE
  240. #define INTERFACE IDirectDraw
  241. DECLARE_INTERFACE_( IDirectDraw, IUnknown )
  242. {
  243.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
  244.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  245.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  246.     STDMETHOD(Compact)(THIS) PURE;
  247.     STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
  248.     STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
  249.     STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
  250.     STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
  251.     STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
  252.     STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
  253.     STDMETHOD(FlipToGDISurface)(THIS) PURE;
  254.     STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
  255.     STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
  256.     STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
  257.     STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
  258.     STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
  259.     STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
  260.     STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
  261.     STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
  262.     STDMETHOD(RestoreDisplayMode)(THIS) PURE;
  263.     STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
  264.     STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD) PURE;
  265.     STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
  266. };
  267.  
  268. #define IDirectDraw_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
  269. #define IDirectDraw_AddRef(p)       (p)->lpVtbl->AddRef(p)
  270. #define IDirectDraw_Release(p)      (p)->lpVtbl->Release(p)
  271. #define IDirectDraw_Compact(p)      (p)->lpVtbl->Compact(p)
  272. #define IDirectDraw_CreateClipper(p, a, b, c)   (p)->lpVtbl->CreateClipper(p, a, b, c)
  273. #define IDirectDraw_CreatePalette(p, a, b, c, d)    (p)->lpVtbl->CreatePalette(p, a, b, c, d)
  274. #define IDirectDraw_CreateSurface(p, a, b, c)   (p)->lpVtbl->CreateSurface(p, a, b, c)
  275. #define IDirectDraw_DuplicateSurface(p, a, b)   (p)->lpVtbl->DuplicateSurface(p, a, b)
  276. #define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
  277. #define IDirectDraw_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
  278. #define IDirectDraw_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
  279. #define IDirectDraw_GetCaps(p, a, b)    (p)->lpVtbl->GetCaps(p, a, b)
  280. #define IDirectDraw_GetDisplayMode(p, a)    (p)->lpVtbl->GetDisplayMode(p, a)
  281. #define IDirectDraw_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b)
  282. #define IDirectDraw_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a)
  283. #define IDirectDraw_GetMonitorFrequency(p, a)   (p)->lpVtbl->GetMonitorFrequency(p, a)
  284. #define IDirectDraw_GetScanLine(p, a)   (p)->lpVtbl->GetScanLine(p, a)
  285. #define IDirectDraw_GetVerticalBlankStatus(p, a)    (p)->lpVtbl->GetVerticalBlankStatus(p, a)
  286. #define IDirectDraw_Initialize(p, a)    (p)->lpVtbl->Initialize(p, a)
  287. #define IDirectDraw_RestoreDisplayMode(p)   (p)->lpVtbl->RestoreDisplayMode(p)
  288. #define IDirectDraw_SetCooperativeLevel(p, a, b)    (p)->lpVtbl->SetCooperativeLevel(p, a, b)
  289. #define IDirectDraw_SetDisplayMode(p, a, b, c)  (p)->lpVtbl->SetDisplayMode(p, a, b, c)
  290. #define IDirectDraw_WaitForVerticalBlank(p, a, b)   (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
  291. #endif
  292.  
  293. #if defined( _WIN32 ) && !defined( _NO_COM )
  294. #undef INTERFACE
  295. #define INTERFACE IDirectDraw2
  296. DECLARE_INTERFACE_( IDirectDraw2, IUnknown )
  297. {
  298.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
  299.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  300.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  301.     STDMETHOD(Compact)(THIS) PURE;
  302.     STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
  303.     STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
  304.     STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
  305.     STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
  306.     STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
  307.     STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
  308.     STDMETHOD(FlipToGDISurface)(THIS) PURE;
  309.     STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
  310.     STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
  311.     STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
  312.     STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
  313.     STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
  314.     STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
  315.     STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
  316.     STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
  317.     STDMETHOD(RestoreDisplayMode)(THIS) PURE;
  318.     STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
  319.     STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
  320.     STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
  321.     /*** Added in the v2 interface ***/
  322.     STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS, LPDWORD, LPDWORD) PURE;
  323. };
  324. #define IDirectDraw2_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
  325. #define IDirectDraw2_AddRef(p)       (p)->lpVtbl->AddRef(p)
  326. #define IDirectDraw2_Release(p)      (p)->lpVtbl->Release(p)
  327. #define IDirectDraw2_Compact(p)      (p)->lpVtbl->Compact(p)
  328. #define IDirectDraw2_CreateClipper(p, a, b, c)   (p)->lpVtbl->CreateClipper(p, a, b, c)
  329. #define IDirectDraw2_CreatePalette(p, a, b, c, d)    (p)->lpVtbl->CreatePalette(p, a, b, c, d)
  330. #define IDirectDraw2_CreateSurface(p, a, b, c)   (p)->lpVtbl->CreateSurface(p, a, b, c)
  331. #define IDirectDraw2_DuplicateSurface(p, a, b)   (p)->lpVtbl->DuplicateSurface(p, a, b)
  332. #define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
  333. #define IDirectDraw2_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
  334. #define IDirectDraw2_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
  335. #define IDirectDraw2_GetCaps(p, a, b)    (p)->lpVtbl->GetCaps(p, a, b)
  336. #define IDirectDraw2_GetDisplayMode(p, a)    (p)->lpVtbl->GetDisplayMode(p, a)
  337. #define IDirectDraw2_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b)
  338. #define IDirectDraw2_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a)
  339. #define IDirectDraw2_GetMonitorFrequency(p, a)   (p)->lpVtbl->GetMonitorFrequency(p, a)
  340. #define IDirectDraw2_GetScanLine(p, a)   (p)->lpVtbl->GetScanLine(p, a)
  341. #define IDirectDraw2_GetVerticalBlankStatus(p, a)    (p)->lpVtbl->GetVerticalBlankStatus(p, a)
  342. #define IDirectDraw2_Initialize(p, a)    (p)->lpVtbl->Initialize(p, a)
  343. #define IDirectDraw2_RestoreDisplayMode(p)   (p)->lpVtbl->RestoreDisplayMode(p)
  344. #define IDirectDraw2_SetCooperativeLevel(p, a, b)    (p)->lpVtbl->SetCooperativeLevel(p, a, b)
  345. #define IDirectDraw2_SetDisplayMode(p, a, b, c, d)   (p)->lpVtbl->SetDisplayMode(p, a, b, c, d)
  346. #define IDirectDraw2_WaitForVerticalBlank(p, a, b)   (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
  347. #define IDirectDraw2_GetAvailableVidMem(p, a, b, c)  (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
  348.  
  349. #endif
  350. #if defined( _WIN32 ) && !defined( _NO_COM )
  351. #undef INTERFACE
  352. #define INTERFACE IDirectDrawPalette
  353. DECLARE_INTERFACE_( IDirectDrawPalette, IUnknown )
  354. {
  355.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
  356.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  357.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  358.     STDMETHOD(GetCaps)(THIS_ LPDWORD) PURE;
  359.     STDMETHOD(GetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
  360.     STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD, LPPALETTEENTRY) PURE;
  361.     STDMETHOD(SetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
  362. };
  363.  
  364. #define IDirectDrawPalette_QueryInterface(p, a, b)  (p)->lpVtbl->QueryInterface(p, a, b)
  365. #define IDirectDrawPalette_AddRef(p)    (p)->lpVtbl->AddRef(p)
  366. #define IDirectDrawPalette_Release(p)   (p)->lpVtbl->Release(p)
  367. #define IDirectDrawPalette_GetCaps(p, a)    (p)->lpVtbl->GetCaps(p, a)
  368. #define IDirectDrawPalette_GetEntries(p, a, b, c, d)    (p)->lpVtbl->GetEntries(p, a, b, c, d)
  369. #define IDirectDrawPalette_Initialize(p, a, b, c)   (p)->lpVtbl->Initialize(p, a, b, c)
  370. #define IDirectDrawPalette_SetEntries(p, a, b, c, d)    (p)->lpVtbl->SetEntries(p, a, b, c, d)
  371.  
  372. #endif
  373. #if defined( _WIN32 ) && !defined( _NO_COM )
  374. #undef INTERFACE
  375. #define INTERFACE IDirectDrawClipper
  376. DECLARE_INTERFACE_( IDirectDrawClipper, IUnknown )
  377. {
  378.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
  379.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  380.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  381.     STDMETHOD(GetClipList)(THIS_ LPRECT, LPRGNDATA, LPDWORD) PURE;
  382.     STDMETHOD(GetHWnd)(THIS_ HWND FAR *) PURE;
  383.     STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD) PURE;
  384.     STDMETHOD(IsClipListChanged)(THIS_ BOOL FAR *) PURE;
  385.     STDMETHOD(SetClipList)(THIS_ LPRGNDATA,DWORD) PURE;
  386.     STDMETHOD(SetHWnd)(THIS_ DWORD, HWND ) PURE;
  387. };
  388.  
  389. #define IDirectDrawClipper_QueryInterface(p, a, b)  (p)->lpVtbl->QueryInterface(p, a, b)
  390. #define IDirectDrawClipper_AddRef(p)    (p)->lpVtbl->AddRef(p)
  391. #define IDirectDrawClipper_Release(p)   (p)->lpVtbl->Release(p)
  392. #define IDirectDrawClipper_GetClipList(p, a, b, c)  (p)->lpVtbl->GetClipList(p, a, b, c)
  393. #define IDirectDrawClipper_GetHWnd(p, a)    (p)->lpVtbl->GetHWnd(p, a)
  394. #define IDirectDrawClipper_Initialize(p, a, b)  (p)->lpVtbl->Initialize(p, a, b)
  395. #define IDirectDrawClipper_IsClipListChanged(p, a)  (p)->lpVtbl->IsClipListChanged(p, a)
  396. #define IDirectDrawClipper_SetClipList(p, a, b) (p)->lpVtbl->SetClipList(p, a, b)
  397. #define IDirectDrawClipper_SetHWnd(p, a, b) (p)->lpVtbl->SetHWnd(p, a, b)
  398.  
  399. #endif
  400. #if defined( _WIN32 ) && !defined( _NO_COM )
  401. #undef INTERFACE
  402. #define INTERFACE IDirectDrawSurface
  403. DECLARE_INTERFACE_( IDirectDrawSurface, IUnknown )
  404. {
  405.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
  406.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  407.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  408.     STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE) PURE;
  409.     STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
  410.     STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX) PURE;
  411.     STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
  412.     STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD) PURE;
  413.     STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE) PURE;
  414.     STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
  415.     STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
  416.     STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE;
  417.     STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE FAR *) PURE;
  418.     STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
  419.     STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
  420.     STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
  421.     STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
  422.     STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
  423.     STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
  424.     STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
  425.     STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
  426.     STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
  427.     STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
  428.     STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
  429.     STDMETHOD(IsLost)(THIS) PURE;
  430.     STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
  431.     STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
  432.     STDMETHOD(Restore)(THIS) PURE;
  433.     STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
  434.     STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
  435.     STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
  436.     STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
  437.     STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
  438.     STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
  439.     STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
  440.     STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE) PURE;
  441. };
  442.  
  443. #define IDirectDrawSurface_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  444. #define IDirectDrawSurface_AddRef(p)    (p)->lpVtbl->AddRef(p)
  445. #define IDirectDrawSurface_Release(p)   (p)->lpVtbl->Release(p)
  446. #define IDirectDrawSurface_AddAttachedSurface(p,a)  (p)->lpVtbl->AddAttachedSurface(p,a)
  447. #define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
  448. #define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
  449. #define IDirectDrawSurface_BltBatch(p,a,b,c)    (p)->lpVtbl->BltBatch(p,a,b,c)
  450. #define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
  451. #define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
  452. #define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
  453. #define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
  454. #define IDirectDrawSurface_Flip(p,a,b)  (p)->lpVtbl->Flip(p,a,b)
  455. #define IDirectDrawSurface_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
  456. #define IDirectDrawSurface_GetBltStatus(p,a)    (p)->lpVtbl->GetBltStatus(p,a)
  457. #define IDirectDrawSurface_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b)
  458. #define IDirectDrawSurface_GetClipper(p,a)  (p)->lpVtbl->GetClipper(p,a)
  459. #define IDirectDrawSurface_GetColorKey(p,a,b)   (p)->lpVtbl->GetColorKey(p,a,b)
  460. #define IDirectDrawSurface_GetDC(p,a)   (p)->lpVtbl->GetDC(p,a)
  461. #define IDirectDrawSurface_GetFlipStatus(p,a)   (p)->lpVtbl->GetFlipStatus(p,a)
  462. #define IDirectDrawSurface_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
  463. #define IDirectDrawSurface_GetPalette(p,a)  (p)->lpVtbl->GetPalette(p,a)
  464. #define IDirectDrawSurface_GetPixelFormat(p,a)  (p)->lpVtbl->GetPixelFormat(p,a)
  465. #define IDirectDrawSurface_GetSurfaceDesc(p,a)  (p)->lpVtbl->GetSurfaceDesc(p,a)
  466. #define IDirectDrawSurface_Initialize(p,a,b)    (p)->lpVtbl->Initialize(p,a,b)
  467. #define IDirectDrawSurface_IsLost(p)    (p)->lpVtbl->IsLost(p)
  468. #define IDirectDrawSurface_Lock(p,a,b,c,d)  (p)->lpVtbl->Lock(p,a,b,c,d)
  469. #define IDirectDrawSurface_ReleaseDC(p,a)   (p)->lpVtbl->ReleaseDC(p,a)
  470. #define IDirectDrawSurface_Restore(p)   (p)->lpVtbl->Restore(p)
  471. #define IDirectDrawSurface_SetClipper(p,a)  (p)->lpVtbl->SetClipper(p,a)
  472. #define IDirectDrawSurface_SetColorKey(p,a,b)   (p)->lpVtbl->SetColorKey(p,a,b)
  473. #define IDirectDrawSurface_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
  474. #define IDirectDrawSurface_SetPalette(p,a)  (p)->lpVtbl->SetPalette(p,a)
  475. #define IDirectDrawSurface_Unlock(p,b)  (p)->lpVtbl->Unlock(p,b)
  476. #define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
  477. #define IDirectDrawSurface_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
  478. #define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
  479.  
  480. #undef INTERFACE
  481. #define INTERFACE IDirectDrawSurface2
  482. DECLARE_INTERFACE_( IDirectDrawSurface2, IUnknown )
  483. {
  484.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
  485.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  486.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  487.     STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE2) PURE;
  488.     STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
  489.     STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX) PURE;
  490.     STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
  491.     STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD) PURE;
  492.     STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE2) PURE;
  493.     STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
  494.     STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
  495.     STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE2, DWORD) PURE;
  496.     STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *) PURE;
  497.     STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
  498.     STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
  499.     STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
  500.     STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
  501.     STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
  502.     STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
  503.     STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
  504.     STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
  505.     STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
  506.     STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
  507.     STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
  508.     STDMETHOD(IsLost)(THIS) PURE;
  509.     STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
  510.     STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
  511.     STDMETHOD(Restore)(THIS) PURE;
  512.     STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
  513.     STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
  514.     STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
  515.     STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
  516.     STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
  517.     STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
  518.     STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
  519.     STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE2) PURE;
  520.     /*** Added in the v2 interface ***/
  521.     STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
  522.     STDMETHOD(PageLock)(THIS_ DWORD) PURE;
  523.     STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
  524. };
  525.  
  526. #define IDirectDrawSurface2_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  527. #define IDirectDrawSurface2_AddRef(p)    (p)->lpVtbl->AddRef(p)
  528. #define IDirectDrawSurface2_Release(p)   (p)->lpVtbl->Release(p)
  529. #define IDirectDrawSurface2_AddAttachedSurface(p,a)  (p)->lpVtbl->AddAttachedSurface(p,a)
  530. #define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
  531. #define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
  532. #define IDirectDrawSurface2_BltBatch(p,a,b,c)    (p)->lpVtbl->BltBatch(p,a,b,c)
  533. #define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
  534. #define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
  535. #define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
  536. #define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
  537. #define IDirectDrawSurface2_Flip(p,a,b)  (p)->lpVtbl->Flip(p,a,b)
  538. #define IDirectDrawSurface2_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
  539. #define IDirectDrawSurface2_GetBltStatus(p,a)    (p)->lpVtbl->GetBltStatus(p,a)
  540. #define IDirectDrawSurface2_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b)
  541. #define IDirectDrawSurface2_GetClipper(p,a)  (p)->lpVtbl->GetClipper(p,a)
  542. #define IDirectDrawSurface2_GetColorKey(p,a,b)   (p)->lpVtbl->GetColorKey(p,a,b)
  543. #define IDirectDrawSurface2_GetDC(p,a)   (p)->lpVtbl->GetDC(p,a)
  544. #define IDirectDrawSurface2_GetFlipStatus(p,a)   (p)->lpVtbl->GetFlipStatus(p,a)
  545. #define IDirectDrawSurface2_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
  546. #define IDirectDrawSurface2_GetPalette(p,a)  (p)->lpVtbl->GetPalette(p,a)
  547. #define IDirectDrawSurface2_GetPixelFormat(p,a)  (p)->lpVtbl->GetPixelFormat(p,a)
  548. #define IDirectDrawSurface2_GetSurfaceDesc(p,a)  (p)->lpVtbl->GetSurfaceDesc(p,a)
  549. #define IDirectDrawSurface2_Initialize(p,a,b)    (p)->lpVtbl->Initialize(p,a,b)
  550. #define IDirectDrawSurface2_IsLost(p)    (p)->lpVtbl->IsLost(p)
  551. #define IDirectDrawSurface2_Lock(p,a,b,c,d)  (p)->lpVtbl->Lock(p,a,b,c,d)
  552. #define IDirectDrawSurface2_ReleaseDC(p,a)   (p)->lpVtbl->ReleaseDC(p,a)
  553. #define IDirectDrawSurface2_Restore(p)   (p)->lpVtbl->Restore(p)
  554. #define IDirectDrawSurface2_SetClipper(p,a)  (p)->lpVtbl->SetClipper(p,a)
  555. #define IDirectDrawSurface2_SetColorKey(p,a,b)   (p)->lpVtbl->SetColorKey(p,a,b)
  556. #define IDirectDrawSurface2_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
  557. #define IDirectDrawSurface2_SetPalette(p,a)  (p)->lpVtbl->SetPalette(p,a)
  558. #define IDirectDrawSurface2_Unlock(p,b)  (p)->lpVtbl->Unlock(p,b)
  559. #define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
  560. #define IDirectDrawSurface2_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
  561. #define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
  562. #define IDirectDrawSurface2_GetDDInterface(p,a)         (p)->lpVtbl->GetDDInterface(p,a)
  563. #define IDirectDrawSurface2_PageLock(p,a)         (p)->lpVtbl->PageLock(p,a)
  564. #define IDirectDrawSurface2_PageUnlock(p,a)         (p)->lpVtbl->PageUnlock(p,a)
  565. #endif
  566. typedef struct _DDSURFACEDESC {
  567.     DWORD        dwSize;            
  568.     DWORD        dwFlags;        
  569.     DWORD        dwHeight;        
  570.     DWORD        dwWidth;        
  571.     LONG        lPitch;            
  572.     DWORD        dwBackBufferCount;    
  573.     union
  574.     {
  575.     DWORD   dwMipMapCount;      
  576.     DWORD        dwZBufferBitDepth;    
  577.     DWORD        dwRefreshRate;        
  578.     };
  579.     DWORD        dwAlphaBitDepth;    
  580.     DWORD        dwReserved;        
  581.     LPVOID        lpSurface;        
  582.     DDCOLORKEY        ddckCKDestOverlay;    
  583.     DDCOLORKEY        ddckCKDestBlt;        
  584.     DDCOLORKEY        ddckCKSrcOverlay;    
  585.     DDCOLORKEY        ddckCKSrcBlt;        
  586.     DDPIXELFORMAT    ddpfPixelFormat;    
  587.     DDSCAPS        ddsCaps;        
  588. } DDSURFACEDESC;
  589. #define DDSD_CAPS        1
  590. #define DDSD_HEIGHT        2
  591. #define DDSD_WIDTH        4
  592. #define DDSD_PITCH        8
  593. #define DDSD_BACKBUFFERCOUNT    32
  594. #define DDSD_ZBUFFERBITDEPTH    0x40
  595. #define DDSD_ALPHABITDEPTH    0x80
  596. #define DDSD_PIXELFORMAT    0x1000
  597. #define DDSD_CKDESTOVERLAY    0x2000
  598. #define DDSD_CKDESTBLT        0x4000
  599. #define DDSD_CKSRCOVERLAY    0x8000
  600. #define DDSD_CKSRCBLT        0x10000
  601. #define DDSD_MIPMAPCOUNT    0x20000
  602. #define DDSD_REFRESHRATE    0x40000
  603. #define DDSD_ALL        0x7f9ee
  604. #define DDSCAPS_3D        1
  605. #define DDSCAPS_ALPHA        2
  606. #define DDSCAPS_BACKBUFFER    4
  607. #define DDSCAPS_COMPLEX        8
  608. #define DDSCAPS_FLIP        16
  609. #define DDSCAPS_FRONTBUFFER    32
  610. #define DDSCAPS_OFFSCREENPLAIN    0x40
  611. #define DDSCAPS_OVERLAY                0x80
  612. #define DDSCAPS_PALETTE                0x100
  613. #define DDSCAPS_PRIMARYSURFACE            0x200
  614. #define DDSCAPS_PRIMARYSURFACELEFT        0x400
  615. #define DDSCAPS_SYSTEMMEMORY            0x800
  616. #define DDSCAPS_TEXTURE                 0x1000
  617. #define DDSCAPS_3DDEVICE            0x2000
  618. #define DDSCAPS_VIDEOMEMORY            0x4000
  619. #define DDSCAPS_VISIBLE                0x8000
  620. #define DDSCAPS_WRITEONLY            0x10000
  621. #define DDSCAPS_ZBUFFER                0x20000
  622. #define DDSCAPS_OWNDC                0x40000
  623. #define DDSCAPS_LIVEVIDEO            0x80000
  624. #define DDSCAPS_HWCODEC                0x100000
  625. #define DDSCAPS_MODEX                0x200000
  626. #define DDSCAPS_MIPMAP          0x400000
  627. #define DDSCAPS_ALLOCONLOAD     0x4000000
  628. #define DDCAPS_3D            1
  629. #define DDCAPS_ALIGNBOUNDARYDEST    2
  630. #define DDCAPS_ALIGNSIZEDEST        4
  631. #define DDCAPS_ALIGNBOUNDARYSRC        8
  632. #define DDCAPS_ALIGNSIZESRC        16
  633. #define DDCAPS_ALIGNSTRIDE        32
  634. #define DDCAPS_BLT            0x40
  635. #define DDCAPS_BLTQUEUE            0x80
  636. #define DDCAPS_BLTFOURCC        0x100
  637. #define DDCAPS_BLTSTRETCH        0x200
  638. #define DDCAPS_GDI            0x400
  639. #define DDCAPS_OVERLAY            0x800
  640. #define DDCAPS_OVERLAYCANTCLIP        0x1000
  641. #define DDCAPS_OVERLAYFOURCC        0x2000
  642. #define DDCAPS_OVERLAYSTRETCH        0x4000
  643. #define DDCAPS_PALETTE            0x8000
  644. #define DDCAPS_PALETTEVSYNC        0x10000
  645. #define DDCAPS_READSCANLINE        0x20000
  646. #define DDCAPS_STEREOVIEW        0x40000
  647. #define DDCAPS_VBI            0x80000
  648. #define DDCAPS_ZBLTS            0x100000
  649. #define DDCAPS_ZOVERLAYS        0x200000
  650. #define DDCAPS_COLORKEY            0x400000
  651. #define DDCAPS_ALPHA            0x800000
  652. #define DDCAPS_COLORKEYHWASSIST        0x1000000
  653. #define DDCAPS_NOHARDWARE        0x2000000
  654. #define DDCAPS_BLTCOLORFILL        0x4000000
  655. #define DDCAPS_BANKSWITCHED        0x8000000
  656. #define DDCAPS_BLTDEPTHFILL        0x10000000
  657. #define DDCAPS_CANCLIP            0x20000000
  658. #define DDCAPS_CANCLIPSTRETCHED        0x40000000
  659. #define DDCAPS_CANBLTSYSMEM        0x80000000
  660. #define DDCAPS2_CERTIFIED        1
  661. #define DDCAPS2_NO2DDURING3DSCENE   2
  662. #define DDFXALPHACAPS_BLTALPHAEDGEBLEND        1
  663. #define DDFXALPHACAPS_BLTALPHAPIXELS        2
  664. #define DDFXALPHACAPS_BLTALPHAPIXELSNEG        4
  665. #define DDFXALPHACAPS_BLTALPHASURFACES        8
  666. #define DDFXALPHACAPS_BLTALPHASURFACESNEG    16
  667. #define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND    32
  668. #define DDFXALPHACAPS_OVERLAYALPHAPIXELS    0x40
  669. #define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG    0x80
  670. #define DDFXALPHACAPS_OVERLAYALPHASURFACES    0x100
  671. #define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG    0x200
  672. #define DDFXCAPS_BLTARITHSTRETCHY    32
  673. #define DDFXCAPS_BLTARITHSTRETCHYN    16
  674. #define DDFXCAPS_BLTMIRRORLEFTRIGHT    0x40
  675. #define DDFXCAPS_BLTMIRRORUPDOWN    0x80
  676. #define DDFXCAPS_BLTROTATION        0x100
  677. #define DDFXCAPS_BLTROTATION90        0x200
  678. #define DDFXCAPS_BLTSHRINKX        0x400
  679. #define DDFXCAPS_BLTSHRINKXN        0x800
  680. #define DDFXCAPS_BLTSHRINKY        0x1000
  681. #define DDFXCAPS_BLTSHRINKYN        0x2000
  682. #define DDFXCAPS_BLTSTRETCHX        0x4000
  683. #define DDFXCAPS_BLTSTRETCHXN        0x8000
  684. #define DDFXCAPS_BLTSTRETCHY        0x10000
  685. #define DDFXCAPS_BLTSTRETCHYN        0x20000
  686. #define DDFXCAPS_OVERLAYARITHSTRETCHY    0x40000
  687. #define DDFXCAPS_OVERLAYARITHSTRETCHYN    8
  688. #define DDFXCAPS_OVERLAYSHRINKX        0x80000
  689. #define DDFXCAPS_OVERLAYSHRINKXN    0x100000
  690. #define DDFXCAPS_OVERLAYSHRINKY        0x200000
  691. #define DDFXCAPS_OVERLAYSHRINKYN    0x400000
  692. #define DDFXCAPS_OVERLAYSTRETCHX    0x800000
  693. #define DDFXCAPS_OVERLAYSTRETCHXN    0x1000000
  694. #define DDFXCAPS_OVERLAYSTRETCHY    0x2000000
  695. #define DDFXCAPS_OVERLAYSTRETCHYN    0x4000000
  696. #define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT    0x8000000
  697. #define DDFXCAPS_OVERLAYMIRRORUPDOWN    0x10000000
  698. #define DDSVCAPS_ENIGMA            1
  699. #define DDSVCAPS_FLICKER        2
  700. #define DDSVCAPS_REDBLUE        4
  701. #define DDSVCAPS_SPLIT            8
  702. #define DDPCAPS_4BIT            1
  703. #define DDPCAPS_8BITENTRIES        2
  704. #define DDPCAPS_8BIT            4
  705. #define DDPCAPS_INITIALIZE        8
  706. #define DDPCAPS_PRIMARYSURFACE        16
  707. #define DDPCAPS_PRIMARYSURFACELEFT    32
  708. #define DDPCAPS_ALLOW256        0x40
  709. #define DDPCAPS_VSYNC            0x80
  710. #define DDPCAPS_1BIT            0x100
  711. #define DDPCAPS_2BIT            0x200
  712. #define DDBD_1            0x4000
  713. #define DDBD_2            0x2000
  714. #define DDBD_4            0x1000
  715. #define DDBD_8            0x800
  716. #define DDBD_16            0x400
  717. #define DDBD_24            0x200
  718. #define DDBD_32            0x100
  719. #define DDCKEY_COLORSPACE    1
  720. #define DDCKEY_DESTBLT        2
  721. #define DDCKEY_DESTOVERLAY    4
  722. #define DDCKEY_SRCBLT        8
  723. #define DDCKEY_SRCOVERLAY    16
  724. #define DDCKEYCAPS_DESTBLT            1
  725. #define DDCKEYCAPS_DESTBLTCLRSPACE        2
  726. #define DDCKEYCAPS_DESTBLTCLRSPACEYUV        4
  727. #define DDCKEYCAPS_DESTBLTYUV            8
  728. #define DDCKEYCAPS_DESTOVERLAY            16
  729. #define DDCKEYCAPS_DESTOVERLAYCLRSPACE        32
  730. #define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV    0x40
  731. #define DDCKEYCAPS_DESTOVERLAYONEACTIVE        0x80
  732. #define DDCKEYCAPS_DESTOVERLAYYUV        0x100
  733. #define DDCKEYCAPS_SRCBLT            0x200
  734. #define DDCKEYCAPS_SRCBLTCLRSPACE        0x400
  735. #define DDCKEYCAPS_SRCBLTCLRSPACEYUV        0x800
  736. #define DDCKEYCAPS_SRCBLTYUV            0x1000
  737. #define DDCKEYCAPS_SRCOVERLAY            0x2000
  738. #define DDCKEYCAPS_SRCOVERLAYCLRSPACE        0x4000
  739. #define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV    0x8000
  740. #define DDCKEYCAPS_SRCOVERLAYONEACTIVE        0x10000
  741. #define DDCKEYCAPS_SRCOVERLAYYUV        0x20000
  742. #define DDCKEYCAPS_NOCOSTOVERLAY        0x40000
  743. #define DDPF_ALPHAPIXELS            1
  744. #define DDPF_ALPHA                2
  745. #define DDPF_FOURCC                4
  746. #define DDPF_PALETTEINDEXED4            8
  747. #define DDPF_PALETTEINDEXEDTO8            16
  748. #define DDPF_PALETTEINDEXED8            32
  749. #define DDPF_RGB                0x40
  750. #define DDPF_COMPRESSED                0x80
  751. #define DDPF_RGBTOYUV                0x100
  752. #define DDPF_YUV                0x200
  753. #define DDPF_ZBUFFER                0x400
  754. #define DDPF_PALETTEINDEXED1            0x800
  755. #define DDPF_PALETTEINDEXED2            0x1000
  756. #define DDENUMSURFACES_ALL            1
  757. #define DDENUMSURFACES_MATCH            2
  758. #define DDENUMSURFACES_NOMATCH            4
  759. #define DDENUMSURFACES_CANBECREATED        8
  760. #define DDENUMSURFACES_DOESEXIST        16
  761. #define DDEDM_REFRESHRATES            1
  762. #define DDSCL_FULLSCREEN            1
  763. #define DDSCL_ALLOWREBOOT            2
  764. #define DDSCL_NOWINDOWCHANGES            4
  765. #define DDSCL_NORMAL                8
  766. #define DDSCL_EXCLUSIVE                16
  767. #define DDSCL_ALLOWMODEX            0x40
  768. #define DDBLT_ALPHADEST                1
  769. #define DDBLT_ALPHADESTCONSTOVERRIDE        2
  770. #define DDBLT_ALPHADESTNEG            4
  771. #define DDBLT_ALPHADESTSURFACEOVERRIDE        8
  772. #define DDBLT_ALPHAEDGEBLEND            16
  773. #define DDBLT_ALPHASRC                32
  774. #define DDBLT_ALPHASRCCONSTOVERRIDE        0x40
  775. #define DDBLT_ALPHASRCNEG            0x80
  776. #define DDBLT_ALPHASRCSURFACEOVERRIDE        0x100
  777. #define DDBLT_ASYNC                0x200
  778. #define DDBLT_COLORFILL                0x400
  779. #define DDBLT_DDFX                0x800
  780. #define DDBLT_DDROPS                0x1000
  781. #define DDBLT_KEYDEST                0x2000
  782. #define DDBLT_KEYDESTOVERRIDE            0x4000
  783. #define DDBLT_KEYSRC                0x8000
  784. #define DDBLT_KEYSRCOVERRIDE            0x10000
  785. #define DDBLT_ROP                0x20000
  786. #define DDBLT_ROTATIONANGLE            0x40000
  787. #define DDBLT_ZBUFFER                0x80000
  788. #define DDBLT_ZBUFFERDESTCONSTOVERRIDE        0x100000
  789. #define DDBLT_ZBUFFERDESTOVERRIDE        0x200000
  790. #define DDBLT_ZBUFFERSRCCONSTOVERRIDE        0x400000
  791. #define DDBLT_ZBUFFERSRCOVERRIDE        0x800000
  792. #define DDBLT_WAIT                0x1000000
  793. #define DDBLT_DEPTHFILL                0x2000000
  794. #define DDBLTFAST_NOCOLORKEY    0
  795. #define DDBLTFAST_SRCCOLORKEY    1
  796. #define DDBLTFAST_DESTCOLORKEY    2
  797. #define DDBLTFAST_WAIT        16
  798. #define DDFLIP_WAIT        1
  799. #define DDOVER_ALPHADEST        1
  800. #define DDOVER_ALPHADESTCONSTOVERRIDE    2
  801. #define DDOVER_ALPHADESTNEG        4
  802. #define DDOVER_ALPHADESTSURFACEOVERRIDE    8
  803. #define DDOVER_ALPHAEDGEBLEND        16
  804. #define DDOVER_ALPHASRC            32
  805. #define DDOVER_ALPHASRCCONSTOVERRIDE    0x40
  806. #define DDOVER_ALPHASRCNEG        0x80
  807. #define DDOVER_ALPHASRCSURFACEOVERRIDE    0x100
  808. #define DDOVER_HIDE            0x200
  809. #define DDOVER_KEYDEST            0x400
  810. #define DDOVER_KEYDESTOVERRIDE        0x800
  811. #define DDOVER_KEYSRC            0x1000
  812. #define DDOVER_KEYSRCOVERRIDE        0x2000
  813. #define DDOVER_SHOW            0x4000
  814. #define DDOVER_ADDDIRTYRECT         0x8000
  815. #define DDOVER_REFRESHDIRTYRECTS    0x10000
  816. #define DDOVER_REFRESHALL              0x20000
  817. #define DDOVER_DDFX            0x80000
  818. #define DDLOCK_SURFACEMEMORYPTR        0    
  819. #define DDLOCK_WAIT            1
  820. #define DDLOCK_EVENT            2
  821. #define DDLOCK_READONLY            16
  822. #define DDLOCK_WRITEONLY        32
  823. #define DDBLTFX_ARITHSTRETCHY        1
  824. #define DDBLTFX_MIRRORLEFTRIGHT        2
  825. #define DDBLTFX_MIRRORUPDOWN        4
  826. #define DDBLTFX_NOTEARING        8
  827. #define DDBLTFX_ROTATE180        16
  828. #define DDBLTFX_ROTATE270        32
  829. #define DDBLTFX_ROTATE90        0x40
  830. #define DDBLTFX_ZBUFFERRANGE        0x80
  831. #define DDBLTFX_ZBUFFERBASEDEST        0x100
  832. #define DDOVERFX_ARITHSTRETCHY        1
  833. #define DDOVERFX_MIRRORLEFTRIGHT    2
  834. #define DDOVERFX_MIRRORUPDOWN        4
  835. #define DDWAITVB_BLOCKBEGIN        1
  836. #define DDWAITVB_BLOCKBEGINEVENT    2
  837. #define DDWAITVB_BLOCKEND        4
  838. #define DDGFS_CANFLIP            1
  839. #define DDGFS_ISFLIPDONE        2
  840. #define DDGBS_CANBLT            1
  841. #define DDGBS_ISBLTDONE            2
  842. #define DDENUMOVERLAYZ_BACKTOFRONT    0
  843. #define DDENUMOVERLAYZ_FRONTTOBACK    1
  844. #define DDOVERZ_SENDTOFRONT        0
  845. #define DDOVERZ_SENDTOBACK        1
  846. #define DDOVERZ_MOVEFORWARD        2
  847. #define DDOVERZ_MOVEBACKWARD        3
  848. #define DDOVERZ_INSERTINFRONTOF        4
  849. #define DDOVERZ_INSERTINBACKOF        5
  850. #define DD_OK                    0
  851. #define DDENUMRET_CANCEL            0
  852. #define DDENUMRET_OK                1
  853. #define DDERR_ALREADYINITIALIZED        MAKE_DDHRESULT( 5 )
  854. #define DDERR_CANNOTATTACHSURFACE        MAKE_DDHRESULT( 10 )
  855. #define DDERR_CANNOTDETACHSURFACE        MAKE_DDHRESULT( 20 )
  856. #define DDERR_CURRENTLYNOTAVAIL            MAKE_DDHRESULT( 40 )
  857. #define DDERR_EXCEPTION                MAKE_DDHRESULT( 55 )
  858. #define DDERR_GENERIC                E_FAIL
  859. #define DDERR_HEIGHTALIGN            MAKE_DDHRESULT( 90 )
  860. #define DDERR_INCOMPATIBLEPRIMARY        MAKE_DDHRESULT( 95 )
  861. #define DDERR_INVALIDCAPS            MAKE_DDHRESULT( 100 )
  862. #define DDERR_INVALIDCLIPLIST            MAKE_DDHRESULT( 110 )
  863. #define DDERR_INVALIDMODE            MAKE_DDHRESULT( 120 )
  864. #define DDERR_INVALIDOBJECT            MAKE_DDHRESULT( 130 )
  865. #define DDERR_INVALIDPARAMS            E_INVALIDARG
  866. #define DDERR_INVALIDPIXELFORMAT        MAKE_DDHRESULT( 145 )
  867. #define DDERR_INVALIDRECT            MAKE_DDHRESULT( 150 )
  868. #define DDERR_LOCKEDSURFACES            MAKE_DDHRESULT( 160 )
  869. #define DDERR_NO3D                MAKE_DDHRESULT( 170 )
  870. #define DDERR_NOALPHAHW                MAKE_DDHRESULT( 180 )
  871. #define DDERR_NOCLIPLIST            MAKE_DDHRESULT( 205 )
  872. #define DDERR_NOCOLORCONVHW            MAKE_DDHRESULT( 210 )
  873. #define DDERR_NOCOOPERATIVELEVELSET        MAKE_DDHRESULT( 212 )
  874. #define DDERR_NOCOLORKEY            MAKE_DDHRESULT( 215 )
  875. #define DDERR_NOCOLORKEYHW            MAKE_DDHRESULT( 220 )
  876. #define DDERR_NODIRECTDRAWSUPPORT        MAKE_DDHRESULT( 222 )
  877. #define DDERR_NOEXCLUSIVEMODE            MAKE_DDHRESULT( 225 )
  878. #define DDERR_NOFLIPHW                MAKE_DDHRESULT( 230 )
  879. #define DDERR_NOGDI                MAKE_DDHRESULT( 240 )
  880. #define DDERR_NOMIRRORHW            MAKE_DDHRESULT( 250 )
  881. #define DDERR_NOTFOUND                MAKE_DDHRESULT( 255 )
  882. #define DDERR_NOOVERLAYHW            MAKE_DDHRESULT( 260 )
  883. #define DDERR_NORASTEROPHW            MAKE_DDHRESULT( 280 )
  884. #define DDERR_NOROTATIONHW            MAKE_DDHRESULT( 290 )
  885. #define DDERR_NOSTRETCHHW            MAKE_DDHRESULT( 310 )
  886. #define DDERR_NOT4BITCOLOR            MAKE_DDHRESULT( 316 )
  887. #define DDERR_NOT4BITCOLORINDEX            MAKE_DDHRESULT( 317 )
  888. #define DDERR_NOT8BITCOLOR            MAKE_DDHRESULT( 320 )
  889. #define DDERR_NOTEXTUREHW            MAKE_DDHRESULT( 330 )
  890. #define DDERR_NOVSYNCHW                MAKE_DDHRESULT( 335 )
  891. #define DDERR_NOZBUFFERHW            MAKE_DDHRESULT( 340 )
  892. #define DDERR_NOZOVERLAYHW            MAKE_DDHRESULT( 350 )
  893. #define DDERR_OUTOFCAPS                MAKE_DDHRESULT( 360 )
  894. #define DDERR_OUTOFMEMORY            E_OUTOFMEMORY
  895. #define DDERR_OUTOFVIDEOMEMORY            MAKE_DDHRESULT( 380 )
  896. #define DDERR_OVERLAYCANTCLIP            MAKE_DDHRESULT( 382 )
  897. #define DDERR_OVERLAYCOLORKEYONLYONEACTIVE    MAKE_DDHRESULT( 384 )
  898. #define DDERR_PALETTEBUSY            MAKE_DDHRESULT( 387 )
  899. #define DDERR_COLORKEYNOTSET            MAKE_DDHRESULT( 400 )
  900. #define DDERR_SURFACEALREADYATTACHED        MAKE_DDHRESULT( 410 )
  901. #define DDERR_SURFACEALREADYDEPENDENT        MAKE_DDHRESULT( 420 )
  902. #define DDERR_SURFACEBUSY            MAKE_DDHRESULT( 430 )
  903. #define DDERR_CANTLOCKSURFACE            MAKE_DDHRESULT( 435 )
  904. #define DDERR_SURFACEISOBSCURED            MAKE_DDHRESULT( 440 )
  905. #define DDERR_SURFACELOST            MAKE_DDHRESULT( 450 )
  906. #define DDERR_SURFACENOTATTACHED        MAKE_DDHRESULT( 460 )
  907. #define DDERR_TOOBIGHEIGHT            MAKE_DDHRESULT( 470 )
  908. #define DDERR_TOOBIGSIZE            MAKE_DDHRESULT( 480 )
  909. #define DDERR_TOOBIGWIDTH            MAKE_DDHRESULT( 490 )
  910. #define DDERR_UNSUPPORTED            E_NOTIMPL
  911. #define DDERR_UNSUPPORTEDFORMAT            MAKE_DDHRESULT( 510 )
  912. #define DDERR_UNSUPPORTEDMASK            MAKE_DDHRESULT( 520 )
  913. #define DDERR_VERTICALBLANKINPROGRESS        MAKE_DDHRESULT( 537 )
  914. #define DDERR_WASSTILLDRAWING            MAKE_DDHRESULT( 540 )
  915. #define DDERR_XALIGN                MAKE_DDHRESULT( 560 )
  916. #define DDERR_INVALIDDIRECTDRAWGUID        MAKE_DDHRESULT( 561 )
  917. #define DDERR_DIRECTDRAWALREADYCREATED        MAKE_DDHRESULT( 562 )
  918. #define DDERR_NODIRECTDRAWHW            MAKE_DDHRESULT( 563 )
  919. #define DDERR_PRIMARYSURFACEALREADYEXISTS    MAKE_DDHRESULT( 564 )
  920. #define DDERR_NOEMULATION            MAKE_DDHRESULT( 565 )
  921. #define DDERR_REGIONTOOSMALL            MAKE_DDHRESULT( 566 )
  922. #define DDERR_CLIPPERISUSINGHWND        MAKE_DDHRESULT( 567 )
  923. #define DDERR_NOCLIPPERATTACHED            MAKE_DDHRESULT( 568 )
  924. #define DDERR_NOHWND                MAKE_DDHRESULT( 569 )
  925. #define DDERR_HWNDSUBCLASSED            MAKE_DDHRESULT( 570 )
  926. #define DDERR_HWNDALREADYSET            MAKE_DDHRESULT( 571 )
  927. #define DDERR_NOPALETTEATTACHED            MAKE_DDHRESULT( 572 )
  928. #define DDERR_NOPALETTEHW            MAKE_DDHRESULT( 573 )
  929. #define DDERR_BLTFASTCANTCLIP            MAKE_DDHRESULT( 574 )
  930. #define DDERR_NOBLTHW                MAKE_DDHRESULT( 575 )
  931. #define DDERR_NODDROPSHW            MAKE_DDHRESULT( 576 )
  932. #define DDERR_OVERLAYNOTVISIBLE            MAKE_DDHRESULT( 577 )
  933. #define DDERR_NOOVERLAYDEST            MAKE_DDHRESULT( 578 )
  934. #define DDERR_INVALIDPOSITION            MAKE_DDHRESULT( 579 )
  935. #define DDERR_NOTAOVERLAYSURFACE        MAKE_DDHRESULT( 580 )
  936. #define DDERR_EXCLUSIVEMODEALREADYSET        MAKE_DDHRESULT( 581 )
  937. #define DDERR_NOTFLIPPABLE            MAKE_DDHRESULT( 582 )
  938. #define DDERR_CANTDUPLICATE            MAKE_DDHRESULT( 583 )
  939. #define DDERR_NOTLOCKED                MAKE_DDHRESULT( 584 )
  940. #define DDERR_CANTCREATEDC            MAKE_DDHRESULT( 585 )
  941. #define DDERR_NODC                MAKE_DDHRESULT( 586 )
  942. #define DDERR_WRONGMODE                MAKE_DDHRESULT( 587 )
  943. #define DDERR_IMPLICITLYCREATED            MAKE_DDHRESULT( 588 )
  944. #define DDERR_NOTPALETTIZED            MAKE_DDHRESULT( 589 )
  945. #define DDERR_UNSUPPORTEDMODE            MAKE_DDHRESULT( 590 )
  946. #define DDERR_NOMIPMAPHW            MAKE_DDHRESULT( 591 )
  947. #define DDERR_INVALIDSURFACETYPE        MAKE_DDHRESULT( 592 )
  948. #define DDERR_DCALREADYCREATED            MAKE_DDHRESULT( 620 )
  949. #define DDERR_CANTPAGELOCK            MAKE_DDHRESULT( 640 )
  950. #define DDERR_CANTPAGEUNLOCK            MAKE_DDHRESULT( 660 )
  951. #define DDERR_NOTPAGELOCKED            MAKE_DDHRESULT( 680 )
  952. #define DDERR_NOTINITIALIZED            CO_E_NOTINITIALIZED
  953. #endif
  954.