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

📄 复件 freedirectdraw.h

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

#ifndef __FREEDIRECTDRAW_H_
#define __FREEDIRECTDRAW_H_

#include "resource.h"       // main symbols

#include "FreeDirectDrawDef.h"
#include "FreeDirectDrawDataStruct.h"

/////////////////////////////////////////////////////////////////////////////
// CFreeDirectDraw
class ATL_NO_VTABLE CFreeDirectDraw : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CFreeDirectDraw, &CLSID_FreeDirectDraw>,
	public IDispatchImpl<IFreeDirectDraw, &IID_IFreeDirectDraw, &LIBID_FREEDIRECTXLib>
{
public:
	CFreeDirectDraw()
	{
		m_h_wnd			= NULL;
		m_n_bit			= 8;
		m_n_width		= 640;
		m_n_height		= 480;
		m_clock_count	= 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_FREEDIRECTDRAW)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CFreeDirectDraw)
	COM_INTERFACE_ENTRY(IFreeDirectDraw)
	COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()

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

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

	double	m_clock_count;											//用来锁定刷新率
	
	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);
	int		Flip_Bitmap( BITMAP_FILE_PTR lp_bitmap );
public:
	STDMETHOD(LoadFromConfigFile)(/*[in]*/ULONG config_struct_ptr);
	STDMETHOD(ReleaseOffScreenPlain)(/*[in]*/ULONG plain_ptr);
	STDMETHOD(UnloadBitmapFile)(/*[in]*/ULONG bitmap_file_ptr);
	STDMETHOD(CreateOffScreenPlain)(/*[in]*/ULONG plain_ptr,/*[in]*/int nWidth,/*[in]*/int nHeight,/*[in]*/ULONG 

dwFlags);
	STDMETHOD(ShowUnit)(/*[in]*/ULONG plain_ptr,/*[in]*/int x_pos,/*[in]*/int y_pos);
	STDMETHOD(CopyBitmapToPlain08)(/*[in]*/ULONG bitmap_file_ptr,/*[in]*/ULONG plain_ptr);
	STDMETHOD(LoadBitmapFile)(/*[in]*/ULONG bitmap_file_ptr,/*[in]*/ULONG bitmap_file_name);
	STDMETHOD(Wait_Clock)(/*[in]*/double count);
	STDMETHOD(Start_Clock)();
	STDMETHOD(Flip)();
	STDMETHOD(DrawRandPixel_08)(/*[in]*/int nCount);
	STDMETHOD(UpdatePalette)(/*[in]*/ULONG lp_palette_entry);
	STDMETHOD(SetClipper)(/*[in]*/int nNum,/*[in]*/ULONG lp_rect);
	STDMETHOD(UnInit)();
	STDMETHOD(Init)(/*[in]*/ULONG hWnd,/*[in]*/int nWidth,/*[in]*/int nHeight,/*[in]*/int nBit);
};

#endif //__FREEDIRECTDRAW_H_

⌨️ 快捷键说明

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