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

📄 mymemfile.h

📁 AtScript 1.1 一个很好用的脚本引擎,可以很方便的在你的软件中实现脚本功能,支持用户扩展对象
💻 H
字号:
// MyMemFile.h: interface for the CMyMemFile class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_MYMEMFILE_H__C2B14E22_1FEE_4308_8A56_D368F05F3B45__INCLUDED_)
#define AFX_MYMEMFILE_H__C2B14E22_1FEE_4308_8A56_D368F05F3B45__INCLUDED_

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

#define	MYFILE_POS_BEGIN		(1)
#define	MYFILE_POS_END			(2)
#define	MYFILE_POS_CURRENT		(3)

class CMyMemFile 
{
public:
	CMyMemFile(UINT nGrowBytes = 1024);
	CMyMemFile(BYTE* lpBuffer, UINT nBufferSize, UINT nGrowBytes = 0);

	virtual ~CMyMemFile();

// Operations
	void Attach(BYTE* lpBuffer, UINT nBufferSize, UINT nGrowBytes = 0);
	BYTE* Detach();

// Advanced Overridables
protected:
	virtual BYTE* Alloc(DWORD nBytes);
	virtual BYTE* Realloc(BYTE* lpMem, DWORD nBytes);
	virtual BYTE* Memcpy(BYTE* lpMemTarget, const BYTE* lpMemSource, UINT nBytes);
	virtual void Free(BYTE* lpMem);
	virtual bool GrowFile(DWORD dwNewLen);

public:
	DWORD m_nPosition;

// Implementation
protected:
	UINT m_nGrowBytes;

	DWORD m_nBufferSize;
	DWORD m_nFileSize;
	BYTE* m_lpBuffer;
	BOOL m_bAutoDelete;

public:
	virtual	UINT	CopyMemData(void* lpBuf , int nPos = 0 );
	virtual DWORD	GetPosition() const;
	virtual LONG	Seek(LONG lOff, UINT nFrom);
	virtual void	SetLength(DWORD dwNewLen);
	virtual DWORD	GetLength();
	virtual UINT	Read(void* lpBuf, UINT nCount);
	virtual void	Write(const void* lpBuf, UINT nCount);
	virtual void	Abort();
	virtual void	Flush();
	virtual void	Close();
	virtual UINT	GetBufferPtr(UINT nCommand, UINT nCount = 0,
		void** ppBufStart = NULL, void** ppBufMax = NULL);

	enum BufferCommand { bufferRead, bufferWrite, bufferCommit, bufferCheck };
};

#endif // !defined(AFX_MYMEMFILE_H__C2B14E22_1FEE_4308_8A56_D368F05F3B45__INCLUDED_)

⌨️ 快捷键说明

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