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

📄 ddraw.inc

📁 程序主要是用汇编实现了DirectDraw的窗口化。在写这个程序时在网上查了 很久似乎并没有用WIN32写的窗口模式的DirectDraw程序
💻 INC
📖 第 1 页 / 共 2 页
字号:
;---------------------------------------;
;	DDRAW include file					;
;										;
;	Author :  Ewald Snel				;
;	Copyright (C) 1999, Diamond Crew	;
;										;
;	http://here.is/diamond/				;
;---------------------------------------;


STDMETHOD	MACRO	name, argl :VARARG
LOCAL @tmp_a
LOCAL @tmp_b

@tmp_a	TYPEDEF PROTO argl
@tmp_b	TYPEDEF PTR @tmp_a
name		@tmp_b		?
ENDM

DDINVOKE	MACRO	func, this, arglist :VARARG
	mov			eax , [this]
	mov			eax , [eax]

	IFB <arglist>
		INVOKE [IDirectDrawVtbl. func][eax], this
	ELSE
		INVOKE [IDirectDrawVtbl. func][eax], this, arglist
	ENDIF
ENDM

DDSINVOKE	MACRO	func, this, arglist :VARARG
	mov			eax , [this]
	mov			eax , [eax]

	IFB <arglist>
		INVOKE [IDirectDrawSurfaceVtbl. func][eax], this
	ELSE
		INVOKE [IDirectDrawSurfaceVtbl. func][eax], this, arglist
	ENDIF
ENDM

DDCINVOKE	MACRO	func, this, arglist :VARARG
	mov			eax , [this]
	mov			eax , [eax]

	IFB <arglist>
		INVOKE [IDirectDrawClipperVtbl. func][eax], this
	ELSE
		INVOKE [IDirectDrawClipperVtbl. func][eax], this, arglist
	ENDIF
ENDM



DirectDrawCreate		PROTO :DWORD, :DWORD, :DWORD
DirectDrawCreateClipper	PROTO :DWORD, :DWORD, :DWORD
DirectDrawEnumerateA	PROTO :DWORD, :DWORD
DirectDrawEnumerate		EQU		<DirectDrawEnumerateA>

EXTERNDEF	C CLSID_DirectDraw:GUID
EXTERNDEF	C CLSID_DirectDrawClipper:GUID
EXTERNDEF	C IID_IDirectDraw:GUID
EXTERNDEF	C IID_IDirectDrawSurface:GUID
EXTERNDEF	C IID_IDirectDrawPalette:GUID
EXTERNDEF	C IID_IDirectDrawClipper:GUID

LPDIRECTDRAW			TYPEDEF		PTR IDirectDraw
LPDIRECTDRAWSURFACE		TYPEDEF		PTR IDirectDrawSurface
LPDIRECTDRAWPALETTE		TYPEDEF		PTR IDirectDrawPalette
LPDIRECTDRAWCLIPPER		TYPEDEF		PTR IDirectDrawClipper
LPDDFXROP				TYPEDEF		PTR DDFXROP
LPDDSURFACEDESC			TYPEDEF		PTR DDSURFACEDESC
LPDDCAPS				TYPEDEF		PTR DDCAPS
LPDDBLTFX				TYPEDEF		PTR DDBLTFX
LPDDSCAPS				TYPEDEF		PTR DDSCAPS
LPDDCOLORKEY			TYPEDEF		PTR DDCOLORKEY
LPDDOVERLAYFX			TYPEDEF		PTR DDOVERLAYFX
LPDDPIXELFORMAT			TYPEDEF		PTR DDPIXELFORMAT
LPDDBLTBATCH			TYPEDEF		PTR DDBLTBATCH

; windows defines
LPRECT					TYPEDEF		PTR RECT
LPPALETTEENTRY			TYPEDEF		PTR PALETTEENTRY
LPRGNDATA				TYPEDEF		PTR RGNDATA


DDCOLORKEY	STRUC
	dwColorSpaceLowValue		DWORD		?
	dwColorSpaceHighValue		DWORD		?
DDCOLORKEY	ENDS


DDBLTFX		STRUC
	dwSize						DWORD		?
	dwDDFX						DWORD		?
	dwROP						DWORD		?
	dwDDROP						DWORD		?
	dwRotationAngle				DWORD		?
	dwZBufferOpCode				DWORD		?
	dwZBufferLow				DWORD		?
	dwZBufferHigh				DWORD		?
	dwZBufferBaseDest			DWORD		?
	dwZDestConstBitDepth		DWORD		?
UNION
	dwZDestConst				DWORD		?
	lpDDSZBufferDest			LPDIRECTDRAWSURFACE		?
ENDS
	dwZSrcConstBitDepth			DWORD		?
UNION
	dwZSrcConst					DWORD		?
	lpDDSZBufferSrc				LPDIRECTDRAWSURFACE		?
ENDS
	dwAlphaEdgeBlendBitDepth	DWORD		?
	dwAlphaEdgeBlend			DWORD		?
	dwReserved					DWORD		?
	dwAlphaDestConstBitDepth	DWORD		?
UNION
	dwAlphaDestConst			DWORD		?
	lpDDSAlphaDest				LPDIRECTDRAWSURFACE		?
ENDS
	dwAlphaSrcConstBitDepth		DWORD		?
UNION
	dwAlphaSrcConst				DWORD		?
	lpDDSAlphaSrc				LPDIRECTDRAWSURFACE		?
ENDS
UNION
	dwFillColor					DWORD		?
	dwFillDepth					DWORD		?
	lpDDSPattern				LPDIRECTDRAWSURFACE		?
ENDS
	ddckDestColorkey			DDCOLORKEY		<>
	ddckSrcColorkey				DDCOLORKEY		<>
DDBLTFX		ENDS


DDSCAPS		STRUC
	dwCaps			DWORD		?
DDSCAPS		ENDS


DDCAPS		STRUC
	dwSize							DWORD		?
	dwCaps							DWORD		?
	dwCaps2							DWORD		?
	dwCKeyCaps						DWORD		?
	dwFXCaps						DWORD		?
	dwFXAlphaCaps					DWORD		?
	dwPalCaps						DWORD		?
	dwSVCaps						DWORD		?
	dwAlphaBltConstBitDepths		DWORD		?
	dwAlphaBltPixelBitDepths		DWORD		?
	dwAlphaBltSurfaceBitDepths		DWORD		?
	dwAlphaOverlayConstBitDepths	DWORD		?
	dwAlphaOverlayPixelBitDepths	DWORD		?
	dwAlphaOverlaySurfaceBitDepths	DWORD		?
	dwZBufferBitDepths				DWORD		?
	dwVidMemTotal					DWORD		?
	dwVidMemFree					DWORD		?
	dwMaxVisibleOverlays			DWORD		?
	dwCurrVisibleOverlays			DWORD		?
	dwNumFourCCCodes				DWORD		?
	dwAlignBoundarySrc				DWORD		?
	dwAlignSizeSrc					DWORD		?
	dwAlignBoundaryDest				DWORD		?
	dwAlignSizeDest					DWORD		?
	dwAlignStrideAlign				DWORD		?
	dwRops							DWORD		8 DUP (?)
	ddsCaps							DDSCAPS		<>
	dwMinOverlayStretch				DWORD		?
	dwMaxOverlayStretch				DWORD		?
	dwMinLiveVideoStretch			DWORD		?
	dwMaxLiveVideoStretch			DWORD		?
	dwMinHwCodecStretch				DWORD		?
	dwMaxHwCodecStretch				DWORD		?
	dwReserved1						DWORD		?
	dwReserved2						DWORD		?
	dwReserved3						DWORD		?
	dwSVBCaps						DWORD		?
	dwSVBCKeyCaps					DWORD		?
	dwSVBFXCaps						DWORD		?
	dwSVBRops						DWORD		8 DUP (?)
	dwVSBCaps						DWORD		?
	dwVSBCKeyCaps					DWORD		?
	dwVSBFXCaps						DWORD		?
	dwVSBRops						DWORD		8 DUP (?)
	dwSSBCaps						DWORD		?
	dwSSBCKeyCaps					DWORD		?
	dwSSBFXCaps						DWORD		?
	dwSSBRops						DWORD		8 DUP (?)
	dwReserved4						DWORD		?
	dwReserved5						DWORD		?
	dwReserved6						DWORD		?
DDCAPS		ENDS


DDOVERLAYFX		STRUC
	dwSize						DWORD		?
	dwAlphaEdgeBlendBitDepth	DWORD		?
	dwAlphaEdgeBlend			DWORD		?
	dwReserved					DWORD		?
	dwAlphaDestConstBitDepth	DWORD		?
UNION
	dwAlphaDestConst			DWORD		?
	lpDDSAlphaDest				LPDIRECTDRAWSURFACE		?
ENDS
	dwAlphaSrcConstBitDepth		DWORD		?
UNION
	dwAlphaSrcConst				DWORD		?
	lpDDSAlphaSrc				LPDIRECTDRAWSURFACE		?
ENDS
	dckDestColorkey				DDCOLORKEY		<>
	dckSrcColorkey				DDCOLORKEY		<>
	dwDDFX						DWORD		?
	dwFlags						DWORD		?
DDOVERLAYFX		ENDS


DDPIXELFORMAT	STRUC
	dwSize				DWORD		?
	dwFlags				DWORD		?
	dwFourCC			DWORD		?
UNION
	dwRGBBitCount		DWORD		?
	dwYUVBitCount		DWORD		?
	dwZBufferBitDepth	DWORD		?
	dwAlphaBitDepth		DWORD		?
ENDS
UNION
	dwRBitMask			DWORD		?
	dwYBitMask			DWORD		?
ENDS
UNION
	dwGBitMask			DWORD		?
	dwUBitMask			DWORD		?
ENDS
UNION
	dwBBitMask			DWORD		?
	dwVBitMask			DWORD		?
ENDS
UNION
	dwRGBAlphaBitMask	DWORD		?
	dwYUVAlphaBitMask	DWORD		?
ENDS
DDPIXELFORMAT	ENDS


DDSURFACEDESC	STRUC
	dwSize				DWORD		?
	dwFlags				DWORD		?
	dwHeight			DWORD		?
	dwWidth				DWORD		?
	lPitch				DWORD		?
	dwBackBufferCount	DWORD		?
UNION
	dwMipMapCount		DWORD		?
	dwZBufferBitDepth	DWORD		?
	dwRefreshRate		DWORD		?
ENDS
	dwAlphaBitDepth		DWORD		?
	dwReserved			DWORD		?
	lpSurface			DWORD		?
	ddckCKDestOverlay	DDCOLORKEY		<>
	ddckCKDestBlt		DDCOLORKEY		<>
	ddckCKSrcOverlay	DDCOLORKEY		<>
	ddckCKSrcBlt		DDCOLORKEY		<>
	ddpfPixelFormat		DDPIXELFORMAT	<>
	ddsCaps				DDSCAPS			<>
DDSURFACEDESC	ENDS


DDBLTBATCH	STRUC
	lprDest			LPRECT		?
	lpDDSSrc		LPDIRECTDRAWSURFACE		?
	lprSrc			LPRECT		?
	dwFlags			DWORD		?
	lpDDBltFx		LPDDBLTFX	?
DDBLTBATCH	ENDS




IDirectDrawVtbl	STRUC
	; IUnknown methods
	STDMETHOD	QueryInterface, :PTR IDirectDraw, :PTR, :PTR PTR
	STDMETHOD	AddRef, :PTR IDirectDraw
	STDMETHOD	Release, :PTR IDirectDraw
	; IDirectDraw methods
	STDMETHOD	Compact, :PTR IDirectDraw
	STDMETHOD	CreateClipper, :PTR IDirectDraw, :DWORD, :PTR LPDIRECTDRAWCLIPPER, :PTR IUnknown
	STDMETHOD	CreatePalette, :PTR IDirectDraw, :DWORD, :LPPALETTEENTRY, :PTR LPDIRECTDRAWPALETTE, :PTR IUnknown
	STDMETHOD	CreateSurface, :PTR IDirectDraw, :LPDDSURFACEDESC, :PTR LPDIRECTDRAWSURFACE, :PTR IUnknown
	STDMETHOD	DuplicateSurface, :PTR IDirectDraw, :LPDIRECTDRAWSURFACE, :PTR LPDIRECTDRAWSURFACE
	STDMETHOD	EnumDisplayModes, :PTR IDirectDraw, :DWORD, :LPDDSURFACEDESC, :PTR , :PTR
	STDMETHOD	EnumSurfaces, :PTR IDirectDraw, :DWORD, :LPDDSURFACEDESC, :PTR , :PTR
	STDMETHOD	FlipToGDISurface, :PTR IDirectDraw
	STDMETHOD	GetCaps, :PTR IDirectDraw, :LPDDCAPS, :LPDDCAPS
	STDMETHOD	GetDisplayMode, :PTR IDirectDraw, :LPDDSURFACEDESC
	STDMETHOD	GetFourCCCodes, :PTR IDirectDraw, :PTR DWORD, :PTR DWORD
	STDMETHOD	GetGDISurface, :PTR IDirectDraw, :PTR LPDIRECTDRAWSURFACE
	STDMETHOD	GetMonitorFrequency, :PTR IDirectDraw, :DWORD
	STDMETHOD	GetScanLine, :PTR IDirectDraw, :DWORD
	STDMETHOD	GetVerticalBlankStatus, :PTR IDirectDraw, :PTR SWORD
	STDMETHOD	Initialize, :PTR IDirectDraw, :PTR GUID
	STDMETHOD	RestoreDisplayMode, :PTR IDirectDraw
	STDMETHOD	SetCooperativeLevel, :PTR IDirectDraw, :HWND, :DWORD
	STDMETHOD	SetDisplayMode, :PTR IDirectDraw, :DWORD, :DWORD, :DWORD
	STDMETHOD	WaitForVerticalBlank, :PTR IDirectDraw, :DWORD, :PTR
IDirectDrawVtbl	ENDS


IDirectDrawPaletteVtbl	STRUC
	; IUnknown methods
	STDMETHOD	QueryInterface, :PTR IDirectDrawPalette, :PTR, :PTR PTR
	STDMETHOD	AddRef, :PTR IDirectDrawPalette
	STDMETHOD	Release, :PTR IDirectDrawPalette
	; IDirectDrawPalette methods
	STDMETHOD	GetCaps, :PTR IDirectDrawPalette, :PTR DWORD
	STDMETHOD	GetEntries, :PTR IDirectDrawPalette, :DWORD, :DWORD, :DWORD, :LPPALETTEENTRY
	STDMETHOD	Initialize, :PTR IDirectDrawPalette, :LPDIRECTDRAW, :DWORD, :LPPALETTEENTRY
	STDMETHOD	SetEntries, :PTR IDirectDrawPalette, :DWORD, :DWORD, :DWORD, :LPPALETTEENTRY
IDirectDrawPaletteVtbl	ENDS


IDirectDrawClipperVtbl	STRUC
	; IUnknown methods
	STDMETHOD	QueryInterface, :PTR IDirectDrawClipper, :PTR, :PTR PTR
	STDMETHOD	AddRef, :PTR IDirectDrawClipper
	STDMETHOD	Release, :PTR IDirectDrawClipper
	; IDirectDrawClipper methods
	STDMETHOD	GetClipList, :PTR IDirectDrawClipper, :LPRECT, :LPRGNDATA, :PTR DWORD
	STDMETHOD	GetHWnd, :PTR IDirectDrawClipper, :PTR HWND
	STDMETHOD	Initialize, :PTR IDirectDrawClipper, :LPDIRECTDRAW, :DWORD
	STDMETHOD	IsClipListChanged, :PTR IDirectDrawClipper, :PTR SWORD
	STDMETHOD	SetClipList, :PTR IDirectDrawClipper, :LPRGNDATA, :DWORD
	STDMETHOD	SetHWnd, :PTR IDirectDrawClipper, :DWORD, :HWND
IDirectDrawClipperVtbl	ENDS


IDirectDrawSurfaceVtbl	STRUC
	; IUnknown methods
	STDMETHOD	QueryInterface, :PTR IDirectDrawSurface, :PTR, :PTR PTR
	STDMETHOD	AddRef, :PTR IDirectDrawSurface
	STDMETHOD	Release, :PTR IDirectDrawSurface
	; IDirectDrawSurface methods
	STDMETHOD	AddAttachedSurface, :PTR IDirectDrawSurface, :LPDIRECTDRAWSURFACE
	STDMETHOD	AddOverlayDirtyRect, :PTR IDirectDrawSurface, :LPRECT
	STDMETHOD	Blt, :PTR IDirectDrawSurface, :LPRECT, :LPDIRECTDRAWSURFACE, :LPRECT, :DWORD, :LPDDBLTFX
	STDMETHOD	BltBatch, :PTR IDirectDrawSurface, :LPDDBLTBATCH, :DWORD, :DWORD
	STDMETHOD	BltFast, :PTR IDirectDrawSurface, :DWORD, :DWORD, :LPDIRECTDRAWSURFACE, :LPRECT, :DWORD
	STDMETHOD	DeleteAttachedSurface, :PTR IDirectDrawSurface, :DWORD, :LPDIRECTDRAWSURFACE
	STDMETHOD	EnumAttachedSurfaces, :PTR IDirectDrawSurface, :PTR , :PTR
	STDMETHOD	EnumOverlayZOrders, :PTR IDirectDrawSurface, :DWORD, :PTR , :PTR
	STDMETHOD	Flip, :PTR IDirectDrawSurface, :LPDIRECTDRAWSURFACE, :DWORD
	STDMETHOD	GetAttachedSurface, :PTR IDirectDrawSurface, :LPDDSCAPS, :PTR LPDIRECTDRAWSURFACE
	STDMETHOD	GetBltStatus, :PTR IDirectDrawSurface, :DWORD
	STDMETHOD	GetCaps, :PTR IDirectDrawSurface, :LPDDSCAPS
	STDMETHOD	GetClipper, :PTR IDirectDrawSurface, :PTR LPDIRECTDRAWCLIPPER
	STDMETHOD	GetColorKey, :PTR IDirectDrawSurface, :DWORD, :LPDDCOLORKEY
	STDMETHOD	GetDC, :PTR IDirectDrawSurface, :PTR HDC
	STDMETHOD	GetFlipStatus, :PTR IDirectDrawSurface, :DWORD
	STDMETHOD	GetOverlayPosition, :PTR IDirectDrawSurface, :PTR DWORD, :PTR DWORD
	STDMETHOD	GetPalette, :PTR IDirectDrawSurface, :PTR LPDIRECTDRAWPALETTE
	STDMETHOD	GetPixelFormat, :PTR IDirectDrawSurface, :LPDDPIXELFORMAT
	STDMETHOD	GetSurfaceDesc, :PTR IDirectDrawSurface, :LPDDSURFACEDESC
	STDMETHOD	Initialize, :PTR IDirectDrawSurface, :LPDIRECTDRAW, :LPDDSURFACEDESC
	STDMETHOD	IsLost, :PTR IDirectDrawSurface
	STDMETHOD	mLock, :PTR IDirectDrawSurface, :LPRECT, :LPDDSURFACEDESC, :DWORD, :PTR 
	STDMETHOD	ReleaseDC, :PTR IDirectDrawSurface, :HDC
	STDMETHOD	Restore, :PTR IDirectDrawSurface
	STDMETHOD	SetClipper, :PTR IDirectDrawSurface, :LPDIRECTDRAWCLIPPER
	STDMETHOD	SetColorKey, :PTR IDirectDrawSurface, :DWORD, :LPDDCOLORKEY
	STDMETHOD	SetOverlayPosition, :PTR IDirectDrawSurface, :SDWORD, :SDWORD
	STDMETHOD	SetPalette, :PTR IDirectDrawSurface, :LPDIRECTDRAWPALETTE
	STDMETHOD	Unlock, :PTR IDirectDrawSurface, :PTR 
	STDMETHOD	UpdateOverlay, :PTR IDirectDrawSurface, :LPRECT, :LPDIRECTDRAWSURFACE, :LPRECT, :DWORD, :LPDDOVERLAYFX
	STDMETHOD	UpdateOverlayDisplay, :PTR IDirectDrawSurface, :DWORD
	STDMETHOD	UpdateOverlayZOrder, :PTR IDirectDrawSurface, :DWORD, :LPDIRECTDRAWSURFACE
IDirectDrawSurfaceVtbl	ENDS


IDirectDraw				STRUC
	lpVtbl		DWORD		?
IDirectDraw				ENDS

IDirectDrawPalette		STRUC
	lpVtbl		DWORD		?
IDirectDrawPalette		ENDS

IDirectDrawClipper		STRUC
	lpVtbl		DWORD		?
IDirectDrawClipper		ENDS

IDirectDrawSurface		STRUC
	lpVtbl		DWORD		?
IDirectDrawSurface		ENDS



; Direct Draw Capability Flags
DDSD_CAPS				EQU		000000001h
DDSD_HEIGHT				EQU		000000002h
DDSD_WIDTH				EQU		000000004h
DDSD_PITCH				EQU		000000008h
DDSD_BACKBUFFERCOUNT	EQU		000000020h
DDSD_ZBUFFERBITDEPTH	EQU		000000040h
DDSD_ALPHABITDEPTH		EQU		000000080h
DDSD_PIXELFORMAT		EQU		000001000h
DDSD_CKDESTOVERLAY		EQU		000002000h
DDSD_CKDESTBLT			EQU		000004000h
DDSD_CKSRCOVERLAY		EQU		000008000h
DDSD_CKSRCBLT			EQU		000010000h

⌨️ 快捷键说明

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