📄 freedraw.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 + -