#pragma once
#include <Windows.h>
#include <string>
using namespace std;
/*
//使用例子
CLog cl; //声明对象,最好为全局或成员变量
cl.SetMaxCount(1,2048); //设置文件的最大值,1表示开启最大判断,2048最大为这么多KB,默认为关闭(可不写)
cl.SetFolderName("log"); //默认文件夹为filelog,生成于项目根目录下(可不写)
cl.SetFileName("ce",0); //(文件名不需加后缀,默认为.txt)1:名字加年月日(ce20141029.txt) 0:名字加时分秒 3:原名
cl.WriteToFile(name); //写入缓存,如果大于1k,自动保存
cl.SaveToFile(); //立即保存,把缓存内容写入文件
*/
class CLog
{
public :
CLog()
{
m_Point = NULL;
hDll = NULL;
CString szCurPath("");
GetModuleFileName(AfxGetApp()->m_hInstance,szCurPath.GetBuffer(MAX_PATH),MAX_PATH);
szCurPath.ReleaseBuffer();
szCurPath = szCurPath.Left(szCurPath.ReverseFind('\\') + 1);
hDll = LoadLibrary(szCurPath + _T("\\Loglib.dll"));
if (hDll==NULL)
{
return;
}
else
{
//返回DLL类指针
typedef void* (*CREATE)();
m_Point = (((CREATE)(::GetProcAddress(hDll,"CreatePtr")))());
}
}
~CLog()
{
typedef void (*DELETEs)(void* ptr);
((DELETEs)(::GetProcAddress(hDll,"DeletePtr")))(m_Point);
}
int SetFolderName(char *fname)
{
typedef int (*opt)(void *ptr,char *fname);
return ((opt)(::GetProcAddress(hDll,"SsetFolderName")))(m_Point,fname);
}
int SetFileName(char *fname,int flag)
{
typedef int (*opt)(void *ptr,char *fname,int flag);
return ((opt)(::GetProcAddress(hDll,"SsetFileName")))(m_Point,fname,flag);
}
int WriteToFile(const char *buf)
{
typedef int (*opt)(void *ptr,const char *buf);
return ((opt)(::GetProcAddress(hDll,"SwriteToFile")))(m_Point,buf);
}
int WriteToFile(const char *buf,int len)
{
typedef int (*opt)(void *ptr,const char *buf,int len);
return ((opt)(::GetProcAddress(hDll,"SwriteToFileL")))(m_Point,buf,len);
}
int SaveToFile()
{
typedef int (*opt)(void *ptr);
return ((opt)(::GetProcAddress(hDll,"SsaveToFile")))(m_Point);
}
void SetMaxCount(int flag,int max)
{
typedef int (*opt)(void *ptr,int flag,int max);
((opt)(::GetProcAddress(hDll,"SsetMaxCount")))(m_Point,flag,max);
}
private:
HINSTANCE hDll;
void* m_Point;
};