⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ddrawce.h

📁 大名鼎鼎的CE下播放软件,TCPPMP的源代码!!!2410下可以流畅的解QVGA的H264,MPEG4等格式.
💻 H
字号:
#define DD_OK 0

typedef struct IDirectDraw	*LPDIRECTDRAW;
typedef struct IDirectDrawSurface *LPDIRECTDRAWSURFACE;
typedef struct IDirectDrawClipper *LPDIRECTDRAWCLIPPER;
typedef struct IDirectDrawPalette *LPDIRECTDRAWPALETTE;

static const guid IID_IDirectDraw = { 0x9c59509a, 0x39bd, 0x11d1, { 0x8C,0x4A,0x00,0xC0,0x4F,0xD9,0x30,0xC5 }};

typedef struct DDSCAPS
{
    DWORD	dwCaps;

} DDSCAPS;

typedef DDSCAPS *LPDDSCAPS;

typedef struct DDCAPS
{
	DWORD	dwSize;
    DWORD	dwVidMemTotal;
    DWORD	dwVidMemFree;
    DWORD	dwVidMemStride;
    DDSCAPS ddsCaps;
    DWORD	dwNumFourCCCodes;
    DWORD	dwPalCaps;
    DWORD	dwBltCaps;
    DWORD	dwCKeyCaps;
    DWORD	dwAlphaCaps;
    DWORD	dwRops[8];
    DWORD   dwOverlayCaps;
    DWORD	dwMaxVisibleOverlays;
    DWORD	dwCurrVisibleOverlays;
    DWORD	dwAlignBoundarySrc;
    DWORD	dwAlignSizeSrc;
    DWORD	dwAlignBoundaryDest;
    DWORD	dwAlignSizeDest;
    DWORD	dwMinOverlayStretch;
    DWORD	dwMaxOverlayStretch;
    DWORD   dwMiscCaps;

} DDCAPS;

typedef DDCAPS *LPDDCAPS;

typedef struct DDCOLORKEY
{
    DWORD	dwColorSpaceLowValue;
    DWORD	dwColorSpaceHighValue;

} DDCOLORKEY;

typedef DDCOLORKEY *LPDDCOLORKEY;

typedef struct DDOVERLAYFX
{
    DWORD	dwSize;
    DWORD	dwAlphaConstBitDepth;
	DWORD	dwAlphaConst;
    DDCOLORKEY dckDestColorkey;
    DDCOLORKEY dckSrcColorkey;

} DDOVERLAYFX;

typedef DDOVERLAYFX *LPDDOVERLAYFX;

typedef struct DDPIXELFORMAT
{
	DWORD	dwSize;
	DWORD	dwFlags;
	DWORD	dwFourCC;
	DWORD	dwRGBBitCount;
	DWORD	dwRBitMask;
	DWORD	dwGBitMask;
	DWORD	dwBBitMask;
	DWORD	dwRGBAlphaBitMask;

} DDPIXELFORMAT;

typedef DDPIXELFORMAT *LPDDPIXELFORMAT;

typedef struct DDSURFACEDESC
{
	DWORD	dwSize;
	DWORD	dwFlags;
	DWORD	dwHeight;
	DWORD	dwWidth;
	LONG	lPitch;
    LONG    lXPitch;
	DWORD	dwBackBufferCount;
	DWORD	dwRefreshRate;
	LPVOID	lpSurface;
	DDCOLORKEY	ddckCKDestOverlay;
	DDCOLORKEY	ddckCKDestBlt;
	DDCOLORKEY	ddckCKSrcOverlay;
	DDCOLORKEY	ddckCKSrcBlt;
	DDPIXELFORMAT	ddpfPixelFormat;
	DDSCAPS	ddsCaps;
    DWORD	dwSurfaceSize;

} DDSURFACEDESC;

typedef DDSURFACEDESC *LPDDSURFACEDESC;

#define DDPF_FOURCC				0x00000004
#define DDPF_RGB				0x00000040
#define DDPF_PALETTEINDEXED		0x00000020

#define DDWAITVB_BLOCKBEGIN		0x00000001
#define DDWAITVB_BLOCKEND		0x00000004

#define DDSD_CAPS				0x00000001
#define DDSD_HEIGHT				0x00000002
#define DDSD_WIDTH				0x00000004
#define DDSD_PITCH				0x00000008
#define DDSD_XPITCH             0x00000010
#define DDSD_BACKBUFFERCOUNT	0x00000020
#define DDSD_PIXELFORMAT		0x00001000

#define DDSCAPS_FLIP			0x00000004
#define DDSCAPS_OVERLAY			0x00000010
#define DDSCAPS_PRIMARYSURFACE	0x00000040
#define DDSCAPS_VIDEOMEMORY		0x00000100

#define DDFXCAPS_BLTARITHSTRETCHY 0x00000020
#define DDFXCAPS_OVERLAYARITHSTRETCHY 0x00040000

#define DDBLT_WAITNOTBUSY       0x01000000
#define DDBLT_WAITVSYNC         0x00000001

#define DDLOCK_WAITNOTBUSY		0x00000008

#define DDBLTCAPS_FOURCCTORGB   0x00000004

#define DDOVERLAYCAPS_CKEYDEST        0x00000200
#define DDOVERLAYCAPS_MIRRORLEFTRIGHT 0x00000010
#define DDOVERLAYCAPS_MIRRORUPDOWN    0x00000020
#define DDOVERLAYCAPS_OVERLAYSUPPORT  0x80000000

#define DDOVER_HIDE				0x00000020
#define DDOVER_KEYDEST			0x00000040
#define DDOVER_SHOW				0x00000400
#define DDOVER_MIRRORLEFTRIGHT	0x00001000
#define DDOVER_MIRRORUPDOWN		0x00002000

#define DDCKEY_DESTOVERLAY		0x00000004

#define DDSCL_NORMAL			0x00000000
#define DDSCL_FULLSCREEN		0x00000001

#define DDERR_SURFACELOST		0x887601C2

#define DDFLIP_WAITNOTBUSY		0x00000008

#define DDENUMRET_CANCEL		0
#define DDENUMRET_OK			1

typedef struct IDirectDrawVMT
{
    HRESULT (STDCALL* QueryInterface)(struct IDirectDraw*, const guid*, LPVOID*);
    ULONG (STDCALL* AddRef)(struct IDirectDraw*);
    ULONG (STDCALL* Release)(struct IDirectDraw*);

    HRESULT (STDCALL* CreateClipper)(struct IDirectDraw*, DWORD, LPDIRECTDRAWCLIPPER*, void* );
    HRESULT (STDCALL* CreatePalette)(struct IDirectDraw*, DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE*, void* );
    HRESULT (STDCALL* CreateSurface)(struct IDirectDraw*,  LPDDSURFACEDESC, LPDIRECTDRAWSURFACE*, void*);
    HRESULT (STDCALL* EnumDisplayModes)( struct IDirectDraw*, DWORD, LPDDSURFACEDESC, LPVOID, void* );
    HRESULT (STDCALL* EnumSurfaces)(struct IDirectDraw*, DWORD, LPDDSURFACEDESC, LPVOID, void* );
    HRESULT (STDCALL* FlipToGDISurface)(struct IDirectDraw*);
    HRESULT (STDCALL* GetCaps)( struct IDirectDraw*, LPDDCAPS, LPDDCAPS);
    HRESULT (STDCALL* GetDisplayMode)( struct IDirectDraw*, LPDDSURFACEDESC);
    HRESULT (STDCALL* GetFourCCCodes)(struct IDirectDraw*,  LPDWORD, LPDWORD );
    HRESULT (STDCALL* GetGDISurface)(struct IDirectDraw*, LPDIRECTDRAWSURFACE*);
    HRESULT (STDCALL* GetMonitorFrequency)(struct IDirectDraw*, LPDWORD);
    HRESULT (STDCALL* GetScanLine)(struct IDirectDraw*, LPDWORD);
    HRESULT (STDCALL* GetVerticalBlankStatus)(struct IDirectDraw*, LPBOOL );
    HRESULT (STDCALL* RestoreDisplayMode)(struct IDirectDraw*);
    HRESULT (STDCALL* SetCooperativeLevel)(struct IDirectDraw*, HWND, DWORD);
    HRESULT (STDCALL* SetDisplayMode)(struct IDirectDraw*, DWORD, DWORD,DWORD);
    HRESULT (STDCALL* WaitForVerticalBlank)(struct IDirectDraw*, DWORD, HANDLE);
    HRESULT (STDCALL* GetAvailableVidMem)(struct IDirectDraw*, LPDDSCAPS, LPDWORD, LPDWORD);
    HRESULT (STDCALL* GetSurfaceFromDC)(struct IDirectDraw*, HDC, LPDIRECTDRAWSURFACE*);
    HRESULT (STDCALL* RestoreAllSurfaces)(struct IDirectDraw*);
    HRESULT (STDCALL* TestCooperativeLevel)(struct IDirectDraw*);
    HRESULT (STDCALL* GetDeviceIdentifier)(struct IDirectDraw*,void*, DWORD );

} IDirectDrawVMT;

typedef struct IDirectDraw
{
	IDirectDrawVMT *VMT;

} IDirectDraw;

#define IDirectDraw_QueryInterface(p,a,b)		(p)->VMT->QueryInterface(p,a,b)
#define IDirectDraw_Release(p)					(p)->VMT->Release(p)
#define IDirectDraw_CreateSurface(p,a,b,c)		(p)->VMT->CreateSurface(p,a,b,c)
#define IDirectDraw_GetDisplayMode(p,a)         (p)->VMT->GetDisplayMode(p,a)
#define IDirectDraw_SetCooperativeLevel(p,a,b)  (p)->VMT->SetCooperativeLevel(p,a,b)
#define IDirectDraw_GetCaps(p,a,b)              (p)->VMT->GetCaps(p,a,b)
#define IDirectDraw_WaitForVerticalBlank(p,a,b)	(p)->VMT->WaitForVerticalBlank(p,a,b)

typedef HRESULT (FAR PASCAL *LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID);

typedef struct IDirectDrawSurfaceVMT
{
    HRESULT (STDCALL* QueryInterface)(struct IDirectDrawSurface*, void*, LPVOID*);
    ULONG (STDCALL* AddRef)(struct IDirectDrawSurface*);
    ULONG (STDCALL* Release)(struct IDirectDrawSurface*);

    HRESULT (STDCALL* AddOverlayDirtyRect)(struct IDirectDrawSurface*, LPRECT);
    HRESULT (STDCALL* Blt)(struct IDirectDrawSurface*, LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, void*);
    HRESULT (STDCALL* EnumAttachedSurfaces)(struct IDirectDrawSurface*, LPVOID,LPDDENUMSURFACESCALLBACK);
    HRESULT (STDCALL* EnumOverlayZOrders)(struct IDirectDrawSurface*, DWORD,LPVOID,void*);
    HRESULT (STDCALL* Flip)(struct IDirectDrawSurface*, LPDIRECTDRAWSURFACE, DWORD);
    HRESULT (STDCALL* GetBltStatus)(struct IDirectDrawSurface*, DWORD);
    HRESULT (STDCALL* GetCaps)(struct IDirectDrawSurface*, LPDDSCAPS);
    HRESULT (STDCALL* GetClipper)(struct IDirectDrawSurface*, LPDIRECTDRAWCLIPPER*);
    HRESULT (STDCALL* GetColorKey)(struct IDirectDrawSurface*, DWORD, LPDDCOLORKEY);
    HRESULT (STDCALL* GetDC)(struct IDirectDrawSurface*, HDC*);
    HRESULT (STDCALL* GetFlipStatus)(struct IDirectDrawSurface*, DWORD);
    HRESULT (STDCALL* GetOverlayPosition)(struct IDirectDrawSurface*, LPLONG, LPLONG );
    HRESULT (STDCALL* GetPalette)(struct IDirectDrawSurface*, LPDIRECTDRAWPALETTE*);
    HRESULT (STDCALL* GetPixelFormat)(struct IDirectDrawSurface*, LPDDPIXELFORMAT);
    HRESULT (STDCALL* GetSurfaceDesc)(struct IDirectDrawSurface*, LPDDSURFACEDESC);
    HRESULT (STDCALL* IsLost)(struct IDirectDrawSurface*);
    HRESULT (STDCALL* Lock)(struct IDirectDrawSurface*, LPRECT,LPDDSURFACEDESC,DWORD,HANDLE);
    HRESULT (STDCALL* ReleaseDC)(struct IDirectDrawSurface*, HDC);
    HRESULT (STDCALL* Restore)(struct IDirectDrawSurface*);
    HRESULT (STDCALL* SetClipper)(struct IDirectDrawSurface*, LPDIRECTDRAWCLIPPER);
    HRESULT (STDCALL* SetColorKey)(struct IDirectDrawSurface*, DWORD, LPDDCOLORKEY);
    HRESULT (STDCALL* SetOverlayPosition)(struct IDirectDrawSurface*, LONG, LONG );
    HRESULT (STDCALL* SetPalette)(struct IDirectDrawSurface*, LPDIRECTDRAWPALETTE);
    HRESULT (STDCALL* Unlock)(struct IDirectDrawSurface*, LPVOID);
    HRESULT (STDCALL* UpdateOverlay)(struct IDirectDrawSurface*, LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX);
    HRESULT (STDCALL* UpdateOverlayZOrder)(struct IDirectDrawSurface*, DWORD, LPDIRECTDRAWSURFACE);
    HRESULT (STDCALL* GetDDInterface)(struct IDirectDrawSurface*, LPDIRECTDRAW *);
    HRESULT (STDCALL* AlphaBlt)(struct IDirectDrawSurface*, LPRECT, LPDIRECTDRAWSURFACE, LPRECT, DWORD, void*);

} IDirectDrawSurfaceVMT;

typedef struct IDirectDrawSurface
{
	IDirectDrawSurfaceVMT *VMT;

} IDirectDrawSurface;

#define IDirectDrawSurface_Release(p)					(p)->VMT->Release(p)
#define IDirectDrawSurface_Blt(p,a,b,c,d,e)				(p)->VMT->Blt(p,a,b,c,d,e)
#define IDirectDrawSurface_GetSurfaceDesc(p,a)			(p)->VMT->GetSurfaceDesc(p,a)
#define IDirectDrawSurface_Lock(p,a,b,c,d)				(p)->VMT->Lock(p,a,b,c,d)
#define IDirectDrawSurface_Unlock(p,b)					(p)->VMT->Unlock(p,b)
#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e)	(p)->VMT->UpdateOverlay(p,a,b,c,d,e)
#define IDirectDrawSurface_SetColorKey(p,a,b)           (p)->VMT->SetColorKey(p,a,b)
#define IDirectDrawSurface_Restore(p)                   (p)->VMT->Restore(p)
#define IDirectDrawSurface_Flip(p,a,b)					(p)->VMT->Flip(p,a,b)
#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b)	(p)->VMT->EnumAttachedSurfaces(p,a,b)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -