?? timelogserver.cpp
字號:
// TimeLogServer.cpp : implementation file
//
#include "stdafx.h"
#include "resource.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",
0x50AF86CD,0xAAF2,0x43B8,0x88,0x02,0x48,0x3C,0xFF,0x78,0xEF,0x38);
//映射接口到相應的嵌套類
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(_T("%s.log"),strTmp);
//打開日志文件,參數a表示,打開文件后,在文件尾部追加寫入信息
//,同時如果指定的文件不存在,就新建一個文件。
m_logfile = _wfopen(FileName,_T("a"));
//如果打開日志文件成功的話,記錄初始化日志信息
if(m_logfile)
{
fwprintf(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());
fwprintf(m_logfile,_T("開始于:%s"),strTmp);
fwprintf(m_logfile,_T("\n"));
}
}
//析構函數
CTimeLogServer::~CTimeLogServer()
{
//減少全局對象計數
::AfxOleUnlockApp();
//關閉已打開的日志文件
CString strTmp;
if(m_logfile)
{
//寫入日志結束信息
CTime TimeStamp = CTime::GetCurrentTime();
fwprintf(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());
fwprintf(m_logfile,_T("結束于:%s"),strTmp);
fwprintf(m_logfile,_T("\n"));
fwprintf(m_logfile,_T("# # # # # # # # # # # # # # # # #\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
//為XTimeLog嵌套類實現IUnknown接口
//實現IUnknown接口的AddRef方法
STDMETHODIMP_(ULONG)
CTimeLogServer::XTimeLog::AddRef()
{
METHOD_PROLOGUE(CTimeLogServer,TimeLog)
return pThis->ExternalAddRef();
}
//實現IUnknown接口的Release()方法
STDMETHODIMP_(ULONG)
CTimeLogServer::XTimeLog::Release()
{
METHOD_PROLOGUE(CTimeLogServer,TimeLog)
return pThis->ExternalRelease();
}
//實現IUnknown接口的QueryInterface方法
STDMETHODIMP
CTimeLogServer::XTimeLog::QueryInterface(REFIID riid,void**ppvObj)
{
METHOD_PROLOGUE(CTimeLogServer,TimeLog)
return pThis->ExternalQueryInterface(&riid,ppvObj);
}
//實現ITimeLog接口的寫日志方法OutputLog
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(L"沒有日志文件!");
return S_FALSE;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -