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

📄 freedraw.h

📁 游戏编程很好的东西大家看看啊可以学到很多东西
💻 H
字号:
// FreeDraw.h : Declaration of the CFreeDraw

#ifndef __FREEDRAW_H_
#define __FREEDRAW_H_

#include "resource.h"       // main symbols

#include "FreeDrawDef.h"

/////////////////////////////////////////////////////////////////////////////
// CFreeDraw
class ATL_NO_VTABLE CFreeDraw : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CFreeDraw, &CLSID_FreeDraw>,
	public IDispatchImpl<IFreeDraw, &IID_IFreeDraw, &LIBID_GAMEENGINEATLLib>
{
public:
	CFreeDraw()
	{
		m_h_wnd		= NULL;
		m_n_bit		= 8;
		m_n_width	= 640;
		m_n_height	= 480;
		m_clock		= 0.0;

		m_dd			= NULL;
		m_prim_surface	= NULL;
		m_back_surface	= NULL;
		m_clipper		= NULL;
		m_palette		= NULL;

		m_log.SetIniFileName( "DirectDraw.log" );
		m_ini.SetIniFileName( "FreeDirect.ini" );
	}

DECLARE_REGISTRY_RESOURCEID(IDR_FREEDRAW)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CFreeDraw)
	COM_INTERFACE_ENTRY(IFreeDraw)
	COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()

// IFreeDraw
private:
	HWND	m_h_wnd;												//游戏窗口

	int		m_n_bit;												//单个像素的位数
	int		m_n_width;												//屏幕的宽度
	int		m_n_height;												//屏幕的高度

	double	m_clock;												//用来锁定刷新率
	
	LPDIRECTDRAW7			m_dd;									//DirectDraw对象
	LPDIRECTDRAWSURFACE7	m_prim_surface;							//主页面
	LPDIRECTDRAWSURFACE7	m_back_surface;							//后页面
	LPDIRECTDRAWCLIPPER		m_clipper;								//页面剪切(用来前切后页面)
	LPDIRECTDRAWPALETTE		m_palette;								//调色板(8位图像时使用)
	PALETTEENTRY			m_palatte_entry[MAX_PALETTE_COLORS];	//调色板数据

	CLog	m_log;													//日志类
	CIni	m_ini;													//配置文件类
private:
	int		CreatePalatte();
	int		SetClipper(LPDIRECTDRAWSURFACE7 lpdds, int num, LPRECT clip_list );
	int		UpdatePalette(PALETTEENTRY* lp_palette_entry);
public:
	STDMETHOD(Flip)();
	STDMETHOD(DrawRandPixel_008)(/*[in]*/int nCount);
	STDMETHOD(UpdatePalette)(/*[in]*/ULONG lp_palette_entry);
	STDMETHOD(SetClipper)(/*[in]*/ULONG lp_surface,/*[in]*/int nNum,/*[in]*/ULONG lp_rect);
	STDMETHOD(UnInit)();
	STDMETHOD(Init)(/*[in]*/ULONG hWnd,/*[in]*/int nWidth,/*[in]*/int nHeight,/*[in]*/int nBit);
};

#endif //__FREEDRAW_H_

⌨️ 快捷键说明

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