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

📄 hddrawsurf.h

📁 VC++高级编程技巧与示例
💻 H
字号:
// HDDrawSurf.h: interface for the CDDrawSurf class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_HDDRAWSURF_H__7E644D24_9611_11D4_A599_0000000038B2__INCLUDED_)
#define AFX_HDDRAWSURF_H__7E644D24_9611_11D4_A599_0000000038B2__INCLUDED_

#include "HDirectDraw.h"	// Added by ClassView
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "stdafx.h"
#include "stdio.h"
#include <windows.h>
#include <windowsx.h>
#include <ddraw.h>
#include "HDib.h"	// Added by ClassView

typedef struct
{
	DWORD m_bFromFile;//如果为1,则从文件中直接提取位图;
	char fn[255];     //存储图象数据的文件名;
	DWORD XS;         //表面数据在位图中的X坐标;
	DWORD YS;         //表面数据在位图中的Y坐标;
	DWORD Width;      //表面宽度;
	DWORD Height;     //表面高度;
	DWORD BPP;        //表面色彩深度;
	DWORD DisplayBPP; //DDraw显示模式的颜色深度;
	DWORD Bpl;        //位图文件每一行的字节数;
	BYTE * buf;       //存储图象数据的缓冲区地址;
	LPDIRECTDRAWSURFACE7 lpDestSurf;//生成的表面将要Blit到lpDestSurf表面;
	LPDIRECTDRAW7 lpDD;             //DirectDraw对象;
	DWORD         clrkeyFlags;      //使用透明色的选项;
	COLORREF      Colorkey;     //透明色
}_SURFACE_DATA;

//用于创建一个表面的类:

class CDDrawSurf  
{
protected:
	//成员变量:
	BYTE * Buffer;//指向图形数据的指针;
	CDib * m_Dib;
	LPDIRECTDRAWSURFACE7 lpSourceSurf;//生成的表面;
	_SURFACE_DATA m_Dat;
	//成员函数:
	BYTE * FindPos();
	void LoadBmpFromFile();
	void AssignBuffer();
	BOOL CopyPixels();

public:
	void Delete();
	void SaveBltError(HRESULT re);
	BOOL Restore();
	BOOL CopyPixels24to32();
	BOOL SetColorKey(COLORREF clr=RGB(0,0,0));
	//成员函数:
	CDDrawSurf();
	virtual ~CDDrawSurf();
	LPDIRECTDRAWSURFACE7 Create(_SURFACE_DATA * dat);
	BOOL Blit(int x,      //Blit到X处;
		      int y,      //Blit到Y处;
			  unsigned uck=TRUE//是否使用透明色;
			  );
	void DestroySurface();
};

#endif // !defined(AFX_HDDRAWSURF_H__7E644D24_9611_11D4_A599_0000000038B2__INCLUDED_)

⌨️ 快捷键说明

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