📄 timelogserver.cpp
字号:
// TimeLogServer.cpp : implementation file
//
#include "stdafx.h"
#include "MFC_Com.h"
#include "TimeLogServer.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTimeLogServer
IMPLEMENT_DYNCREATE(CTimeLogServer, CCmdTarget)
// 实现类厂
IMPLEMENT_OLECREATE(CTimeLogServer, "TimeLogServer",
0x11223344, 0x1122, 0x3344, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88);
// 映射接口到相应的嵌套类
BEGIN_INTERFACE_MAP(CTimeLogServer, CCmdTarget)
INTERFACE_PART(CTimeLogServer, IID_ITimeLog, TimeLog)
END_INTERFACE_MAP()
CTimeLogServer::CTimeLogServer()
{
//增加全局对象计数
::AfxOleLockApp();
//得到系统当前时间
CTime TimeStamp = CTime::GetCurrentTime();
//设置日志文件名,用当前日期来给日志文件命名
CString FileName;
CString strTmp;
strTmp.Format(_T("%d-%d-%d"), TimeStamp.GetYear(), TimeStamp.GetMonth(),
TimeStamp.GetDay());
FileName.Format("%s.log", strTmp);
//打开日志文件,参数a表示打开文件后在文件尾部迫加写入信息
//同时,如果指定的文件不存在,则新建一个文件
m_logfile = fopen((LPCTSTR)FileName, _T("a"));
//如果打开日志文件成功,则记录初始化日志信息
if(m_logfile)
{
fprintf(m_logfile, "# # # # # # # # # # # # #\n");
strTmp.Format(_T("%d年%d月%d日%d:%d %d"), TimeStamp.GetYear(),
TimeStamp.GetMonth(), TimeStamp.GetDay(),
TimeStamp.GetHour(), TimeStamp.GetMinute(),
TimeStamp.GetSecond());
fprintf(m_logfile, _T("开始于:%s"), strTmp);
fprintf(m_logfile, _T("\n"));
}
}
CTimeLogServer::~CTimeLogServer()
{
//减少全局对象计数
::AfxOleUnlockApp();
//关闭己打开的日志文件
CString strTmp;
if (m_logfile)
{
//写入日志结束信息
CTime TimeStamp = CTime::GetCurrentTime();
fprintf(m_logfile, _T("/n"));
strTmp.Format(_T("%d年%d月%d日%d:%d %d"), TimeStamp.GetYear(),
TimeStamp.GetMonth(), TimeStamp.GetDay(),
TimeStamp.GetHour(), TimeStamp.GetMinute(),
TimeStamp.GetSecond());
fprintf(m_logfile, _T("结束于:%s"), strTmp);
fprintf(m_logfile, _T("\n"));
fprintf(m_logfile, "# # # # # # # # # # # # #\n");
//关闭日志文件
fclose(m_logfile);
}
}
BEGIN_MESSAGE_MAP(CTimeLogServer, CCmdTarget)
//{{AFX_MSG_MAP(CTimeLogServer)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTimeLogServer message handlers
STDMETHODIMP_(ULONG) CTimeLogServer::XTimeLog::AddRef()
{
METHOD_PROLOGUE(CTimeLogServer, TimeLog)
return pThis->ExternalAddRef();
}
STDMETHODIMP_(ULONG) CTimeLogServer::XTimeLog::Release()
{
METHOD_PROLOGUE(CTimeLogServer, TimeLog)
return pThis->ExternalRelease();
}
STDMETHODIMP CTimeLogServer::XTimeLog::QueryInterface(REFIID riid, void** ppvObj)
{
METHOD_PROLOGUE(CTimeLogServer, TimeLog)
return pThis->ExternalQueryInterface(&riid, ppvObj);
}
STDMETHODIMP CTimeLogServer::XTimeLog::OutputLog(BSTR* varLogText)
{
METHOD_PROLOGUE(CTimeLogServer, TimeLog)
if (pThis->m_logfile)
{
CTime TimeStamp = CTime::GetCurrentTime();
CString NowTime;
NowTime .Format(_T("%d年%d月%d日%d:%d %d"), TimeStamp.GetYear(),
TimeStamp.GetMonth(), TimeStamp.GetDay(),
TimeStamp.GetHour(), TimeStamp.GetMinute(),
TimeStamp.GetSecond());
CString LogText((LPCWSTR)* varLogText);
fwprintf(pThis->m_logfile, L"\n%s\n%s\n", NowTime, LogText);
return NOERROR;
}
else
{
AfxMessageBox("没有口志文件!");
return S_FALSE;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -