directmanage.h

来自「应用程序向导已为您创建了这个 SH 应用程序。此应用程序不仅演示 Microso」· C头文件 代码 · 共 86 行

H
86
字号
#pragma once
#pragma comment(lib,"ddraw.lib")
#pragma comment(lib,"dxguid.lib")
#pragma comment(lib,"winmm.lib")
#include <windows.h>
#include <mmsystem.h>
#include <ddraw.h>
//#include <io.h>

class CDirectManage
{
public:
	CDirectManage(void);
public:
	~CDirectManage(void);

public:
	//自定义DDraw变量
	LPDIRECTDRAW		m_lpDD;				//DirectDraw对象
	LPDIRECTDRAWSURFACE	m_lpDDSPrimary;		//主页面
	LPDIRECTDRAWSURFACE	m_lpDDSBack;	//后台页面
	
	LPDIRECTDRAWSURFACE m_lpDDSSour;	//临时页面
	LPDIRECTDRAWSURFACE m_lpDDSTemp;
	LPDIRECTDRAWSURFACE m_lpDDSBackGround;			// 背景页面

	HWND m_hWnd;

	//
	WORD m_RMask, m_GMask, m_BMask;	//颜色遮罩
	BYTE m_RMove,m_GMove;			//移动到最右边的位数
	DWORD m_rgbMask, m_rgbTemp;
	BOOL m_bIs555;		//是否是555格式
	WORD m_ColorKey16;	//16位透明色
	DWORD m_ColorKey;	//32位透明色
	DDSURFACEDESC		m_ddsd;//离屏页面
	//****************Lock 相关*********************
	WORD *m_GraphBuffer;		// 绘图缓冲区
	int m_GraphPitch;			// 缓冲区跨度
	int m_GraphWidth;			//页面宽度
	int m_GraphHeight;		//页面高度
public:
	void SetDrawhWnd(HWND hWnd);
	//初始化DirectDraw环境
	BOOL InitDDraw(void);
	HRESULT FreeDDraw( void );
	//创建一个GDI裁减器
	BOOL CreateClipper();			
	//创建页面
	BOOL CreateBitmap(LPDIRECTDRAWSURFACE &lpTemp,int x,int y,LPCTSTR BitmapFile=NULL, DWORD MemoryFlag=DDSCAPS_SYSTEMMEMORY );
	//获得位图文件的尺寸大小
	BOOL LoadBitmapFileInfo(HWND hwnd, LPCTSTR filename, int &dx, int &dy);
	//初始化失败的处理函数
	BOOL initFail(LPCTSTR str);
public:
	//显示一个bmp到一个页面
	HRESULT DDReLoadBitmap(IDirectDrawSurface *pdds, LPCTSTR szBitmap);
	//在一个页面上显示一个bmp图片
	HRESULT DDCopyBitmap(IDirectDrawSurface *pdds, HBITMAP hbm, int x, int y, int dx, int dy);
	//位图拷贝
	void Blt(LPDIRECTDRAWSURFACE SS,int x,int y,LPDIRECTDRAWSURFACE DS,RECT rcRect,DWORD Flog);
	//恢复系统页面
	HRESULT restoreAll( void );
	//直接在缓冲区中操作
	BOOL BeginDraw(LPDIRECTDRAWSURFACE lpSur);	
	//关闭缓冲区
	BOOL EndDraw(LPDIRECTDRAWSURFACE lpSur);
	//以单色填充页面
	void FillSurface(LPDIRECTDRAWSURFACE surf, DWORD color);
	//以单色填充页面
	void FillSurface(LPDIRECTDRAWSURFACE surf, WORD color);	
	//
	WORD RGB16(WORD r, WORD g, WORD b);
	WORD RGB16(DWORD color);			//24位转16位
	void ColorIn(int time=50, WORD Color=0);
	void ColorOut(LPDIRECTDRAWSURFACE dest, int time=50);
	//延时
	void Delay(long time);		
	//更新到屏幕
	void UpdateScreen(LPDIRECTDRAWSURFACE lpSurf, RECT DestRect);			
	//更新到屏幕
	void _UpdateScreen(LPDIRECTDRAWSURFACE lpSurf, RECT DestRect);
	//两个点的ALPHA混合(0-31)
	WORD Alpha_Pixel(WORD sour, WORD dest, int alpha);
};

⌨️ 快捷键说明

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