www.pudn.com > FileMemView.rar > FMemView.h


// FMemView.h : Declaration of the CFMemView 
 
#ifndef __FMEMVIEW_H_ 
#define __FMEMVIEW_H_ 
 
#include "resource.h"       // main symbols 
 
///////////////////////////////////////////////////////////////////////////// 
// CFMemView 
class ATL_NO_VTABLE CFMemView :  
	public CComObjectRootEx, 
	public CComCoClass, 
	public IDispatchImpl 
{ 
public: 
	CFMemView() 
	{ 
		m_bShare = TRUE; 
	    m_hFile = NULL;					// 文件句柄 
	    m_hMap =  NULL;					// 内存映射文件句柄 
	    m_lpvFile = NULL; 
		m_nFsize = 0;                   //文件大小 
		m_dOffset = 0; 
	} 
 
DECLARE_REGISTRY_RESOURCEID(IDR_FMEMVIEW) 
 
DECLARE_PROTECT_FINAL_CONSTRUCT() 
 
BEGIN_COM_MAP(CFMemView) 
	COM_INTERFACE_ENTRY(IFMemView) 
	COM_INTERFACE_ENTRY(IDispatch) 
END_COM_MAP() 
 
// IFMemView 
public: 
	long FindPosofRow(long row); 
	STDMETHOD(Save)(); 
	STDMETHOD(Write)(/*[in]*/byte* pAarry,/*[in]*/long nSize); 
	STDMETHOD(Read)(/*[in]*/byte* pAarry,/*[in]*/long nSize); 
	STDMETHOD(RemoveLine)(); 
	STDMETHOD(RemoveLineAt)(/*[in]*/long row); 
	void SetOffset(DWORD nOffSize); 
	void SetSize(DWORD nsize); 
	DWORD GetOffset(); 
	DWORD GetSize(); 
	STDMETHOD(ReadLine)(/*[in]*/unsigned char* pAarry); 
	STDMETHOD(WriteLine)(/*[in]*/unsigned char* pAarry); 
	STDMETHOD(GetFileSize)(/*[out,retval]*/long *nSize); 
	STDMETHOD(DetachMapFile)(); 
	STDMETHOD(CreateMap)(/*[in]*/BSTR fileName,/*[in]*/long bflag, /*[out,retval]*/VARIANT_BOOL *pval); 
    bool m_bShare; 
	HANDLE m_hFile;					// 文件句柄 
	HANDLE m_hMap;					// 内存映射文件句柄 
	LPVOID m_lpvFile;               // 文件数据的头指针 
	byte* m_pData;                 //用于操作文件的指针 
	DWORD  m_nFsize;               //文件的大小,用于写的时候APPEND 
	DWORD  m_dOffset;              //文件指针的偏移,用于读文件时使用 
	}; 
 
#endif //__FMEMVIEW_H_