改编于一个老外的同名作品。
############ log.h #################
//=========================================================================== // // HomeWork from Belgium Not licensed software // 1999 - 2000 No rights reserved // //=========================================================================== // // Project/Product : Iconizer DLL // FileName : log.h // Author(s) : Bart Gysens // // Description : Declaration of CLog class // // Classes : CLog // // Information : // Compiler(s) : Visual C++ 6.0 // Target(s) : Windows 95/98 and Windows NT (x86) // Editor : Visual C++ 6.0 internal editor // // History // Vers. Date Aut. Type Description // ----- ---------- ---- ------- ----------------------------------------- // 1.00 22 05 1999 BG Create Original // 1.01 20 12 2000 hewen Add // 1.03 24 10 2001 hewen Add // 1.04 10 06 2003 hewen Add //===========================================================================
#ifndef _LOG_H_INCLUDED__ #define _LOG_H_INCLUDED__
//=========================================================================== // Macros and typedefs //===========================================================================
//=========================================================================== // // Class : CLog // Author(s) : Bart Gysens // // Description : Declaration of the CLog class // // Comments : none // // History : 1.00 : Create // 1.01 : hewen Add // 1.03 : hewen Add // 1.04 : hewen Add //===========================================================================
class CLog { // Member functions public: CLog();
public: static void PutLog( LPCTSTR pFmt, ... ); //1.01 static void SetFile(LPCTSTR FileName); //1.03 static void Delete(void); //1.04 static void PutLogBinary(VOID *pMem,DWORD Length,BOOL bTxt); static void MessageBox( LPCTSTR pFmt, ... );
};
#endif // _LOG_H_INCLUDED__
############ log.cpp #################
//=========================================================================== // // HomeWork from Belgium Not licensed software // 1999 - 2000 No rights reserved // //=========================================================================== // // Project/Product : Iconizer DLL // FileName : log.cpp // Author(s) : Bart Gysens // // Description : Declaration of CLog class // // Classes : CLog // // Information : // Compiler(s) : Visual C++ 6.0 // Target(s) : Windows 95/98 and Windows NT (x86) // Editor : Visual C++ 6.0 internal editor // // History // Vers. Date Aut. Type Description // ----- ---------- ---- ------- ----------------------------------------- // 1.00 22 05 1999 BG Create Original // 1.01 20 12 2000 hewen Add // 1.03 24 10 2001 hewen Add // 1.04 16 06 2003 hewen Add My BirthDay //===========================================================================
#include "stdafx.h" #include "stdio.h" //1.01 #include "stdlib.h" #include "log.h"
//=========================================================================== // Macros and typedefs //===========================================================================
//=========================================================================== // // Class : CLog // Author(s) : Bart Gysens // // Description : Declaration of the CLog class // // Comments : none // // History : 1.00 : Create // 1.01 : hewen Add // 1.03 : hewen Add // 1.04 : hewen Add //===========================================================================
//1.01 static char gLogFileName[_MAX_PATH] = "LOG.TXT";
CLog::CLog() { }
void CLog::PutLog( LPCTSTR pFmt, ... ) { //1.02 #ifdef _DEBUG_LOG
FILE * pFile; //1.01 pFile = fopen( gLogFileName, "ab" ); //1.00 // pFile = fopen( "C:\\LOG.TXT", "a" );
if ( pFile != NULL ) { va_list arg; va_start( arg, pFmt ); vfprintf( pFile, pFmt, arg ); va_end( arg ); fclose( pFile ); } #endif }
//1.01 void CLog::SetFile(LPCTSTR FileName) { //1.02 #ifdef _DEBUG_LOG strncpy(gLogFileName,FileName,_MAX_PATH); #endif }
//1.03 void CLog::Delete(void) { #ifdef _DEBUG_LOG DeleteFile(gLogFileName); #endif }
//1.04 void CLog::PutLogBinary(VOID *pMem,DWORD Length,BOOL bTxt) { #ifdef _DEBUG_LOG FILE * pFile; int Row, r, i, j;
if(pMem == NULL || Length <= 0) return;
pFile = fopen( gLogFileName, "ab" );
unsigned char *P = (unsigned char *)pMem;
unsigned char txtBuff[16];
if ( pFile != NULL ) { if(!bTxt) { fwrite(P,Length,1,pFile); } else { Row = Length / 16; r = Length % 16;
for(i=0;i<Row;i++) { fprintf(pFile,"%04x:",i); for(j=0;j<16;j++) { fprintf(pFile,"%c%02X",(j == 8 ? '-' : ' '),*P); txtBuff[j] = isgraph(*P) ? *P : '.'; P ++; }
fprintf(pFile," | "); fwrite(txtBuff,16,1,pFile); fprintf(pFile,"\r\n"); }
fprintf(pFile,"%04x:",Row); for(i=0;i<16;i++) { if(i < r) { fprintf(pFile,"%c%02X",(j == 8 ? '-' : ' '),*P); txtBuff[j] = isgraph(*P) ? *P : '.'; } else { fprintf(pFile," "); txtBuff[j] = ' '; } P ++; }
fprintf(pFile," | "); fwrite(txtBuff,16,1,pFile); fprintf(pFile,"\r\n"); }
fprintf(pFile,"\r\n"); fclose( pFile ); }
#endif }
//1.04 #include "windows.h" void CLog::MessageBox( LPCTSTR pFmt, ... ) { #ifdef _DEBUG_LOG char buff[1024]; buff[0] = 0; va_list arg; va_start( arg, pFmt ); vsprintf( buff, pFmt, arg ); va_end( arg ); AfxMessageBox(buff,MB_OK,0); #endif }

|