md_profile.h

来自「MDEngine2plus游戏开发库! 用来开发游戏超级简单!」· C头文件 代码 · 共 104 行

H
104
字号
// MD_Profile.h: interface for the CMD_Profile class.
//
//////////////////////////////////////////////////////////////////////

#ifndef MD_PROFILE_H
#define MD_PROFILE_H

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#ifdef	MDENGINE2P_EXPORTS
#define MDENGINE_API __declspec(dllexport)
#else
#define MDENGINE_API __declspec(dllimport)
#endif


#include "common.h"

typedef DWORD ( *getProviderTypeDLL)(void);
typedef bool ( *OpenDLL)(BYTE*,int,char *);
typedef char* ( *ReadTextDLL)(char* ,char* ,char*);
typedef bool ( *WriteTextDLL)(char* ,char* ,char*);
typedef bool ( *SaveDLL)(char*);
typedef void ( *CloseDLL)(void);



class MDENGINE_API CMD_Profile  
{
public:
	CMD_Profile();
	CMD_Profile(char *filename,char *provider=NULL);
	virtual ~CMD_Profile();

public:
	void	EnableErrMSG(bool bshowerr);	// 允许or禁止弹出错误信息
	DWORD	GetErrCode(void);				// 得到错误代码

	bool	Open(char *filename);
	bool	Open(LPBYTE buf,DWORD len);
	void	Close();
	bool	Save(char *filename=NULL);

	bool	ConnectProvider(char *ProviderName);	// 联接到外部FileProvider
	void	FreeProvider();							// 释放FileProvider

	long	ReadInt(char *index, char *name, long defvalue);	// 读一个整数
	long	ReadInt(char *index, int lines, long defvalue);		// 在指定的行(0 based)读一整数
	double	ReadFloat(char *index, char *name, double defvalue);// 读一个浮点数
	double	ReadFloat(char *index, int lines, double defvalue);	// 在指定的行读一浮点数
	char	*ReadText(char *index, char *name, char *defvalue);	// 读一个字符串
	char	*ReadText(char *index, int lines, char *defvalue);	// 在指定的行读一字符串
	int		ReadIntRegKey(HKEY hKey, char *subkey, char *regname, int valdef);	// 读取指定注册表键的整数
	char	*ReadTextRegKey(HKEY hKey, char *subkey, char *regname, char *def);	// 读取指定注册表键的字符串
	BYTE	*ReadBinRegKey(HKEY hKey, char *subkey, char *regname, BYTE *def);	// 读取指定注册表键的二进制串

	void	WriteInt(char *index, char *name, long num);		// 写一个整数
	void	WriteFloat(char *index, char *name, double value);	// 写一个浮点数
	void	WriteText(char *index, char *name, char *string);	// 写一个字符串
	bool	WriteIntRegKey(HKEY hKey, char *subkey, char *regname, int value);	// 向指定注册表位置写一个整数
	bool	WriteTextRegKey(HKEY hKey, char *subkey, char *regname, char *value);	// 向指定注册表位置写一个字符串
	bool	WriteBinRegKey(HKEY hKey, char *subkey, char *regname, BYTE *lpdata, int size);// 向指定注册表位置写一个二进制串


private:
	void	ShowErrMSG();

	void	InitIndex();
	DWORD	FindIndex(char* index);
	DWORD	FindData(char* name,DWORD index);
	DWORD	FindData(DWORD index,int lines);
	DWORD	GetNextLine(DWORD pos);

//  String functions
	bool	startWith(char *sour,char *str);
	int		indexOf(char *sour,char str);

private:
	char	m_FileName[255];
	char*	m_lpData;
	DWORD	m_DataLen;

	DWORD	*m_lpIndex;
	DWORD	m_IndexNum;

	char	m_lpBuffer[PF_VALUEMAXLEN];

//		FileProvider部分,函数指针
	HINSTANCE			m_hInstProvider;
	getProviderTypeDLL	fp_getProviderType;
	OpenDLL				fp_Open;
	ReadTextDLL			fp_ReadText;
	WriteTextDLL		fp_WriteText;
	SaveDLL				fp_Save;
	CloseDLL			fp_Close;

private:
	DWORD	m_ErrCode;
	bool	m_bShowErrMSG;
};

#endif

⌨️ 快捷键说明

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