找了一个不错的wince日志类
http://www.smartphonedn.com/articles/stlog.html


使用中有点疑问

就是记录日志的时候不能取得毫秒数

查阅了类中的代码
        BOOL GetTimeString(LPSTR szString,  int  nStringSize) 
         {
            SYSTEMTIME st;
            GetLocalTime(&st);
#ifdef STLOG_USE_PERFORMANCE_COUNTER
            LARGE_INTEGER counter;
            QueryPerformanceCounter(&counter);
            return (0 < _snprintf(szString, nStringSize, "%02u:%02u:%02u(%I64d)", st.wHour, st.wMinute, st.wSecond, counter.QuadPart));
#else
            return (0 < _snprintf(szString, nStringSize, "%02u:%02u:%02u:%03u", st.wHour, st.wMinute, st.wSecond, st.wMilliseconds));
#endif



        }
似乎是 GetLocalTime确实没有返回毫秒数

代码:
            LARGE_INTEGER counter;
            QueryPerformanceCounter( & counter);


返回的是一个系统级别的时间,单位是和系统的频率有关系的

看看的的一个日志
19:24:00(2025034847),thr 0xEFAE43F2 : =============================================
19:24:00(2025037662),thr 0xEFAE43F2 : Log is started on 10.12.2005, at 19:24:00:000, executable: /ConnectDemo.exe (ProcID: 0xef312f9a), compile time : Dec 10 2005 19:10:43
19:24:00(2025039310),thr 0xEFAE43F2 : ***Counter 0 at C:/ConnectDemo/ConnectDemoDlg.cpp,66 initialized
19:24:00(2025040604),thr 0xEFAE43F2 : Counter 0 started
19:24:00(2025062483),thr 0xEFAE43F2 : Counter 0 check point at line 82: 20333 ms from start, 20333ms from last checkpoint
19:24:00(2025461301),thr 0xEFAE43F2 : Counter 0 check point at line 101: 419054 ms from start, 398721ms from last checkpoint
19:24:00(2025463041),thr 0xEFAE43F2 : Counter 0 stopped 421045ms from start, 1991ms from last checkpoint
19:24:01(2029917182),thr 0xEFAE43F2 : Counter 0 started
19:24:01(2029921255),thr 0xEFAE43F2 : Counter 0 check point at line 82: 2272 ms from start, 2272ms from last checkpoint
19:24:01(2029998846),thr 0xEFAE43F2 : Counter 0 check point at line 101: 79754 ms from start, 77482ms from last checkpoint
19:24:01(2030000573),thr 0xEFAE43F2 : Counter 0 stopped 81732ms from start, 1978ms from last checkpoint
19:24:02(2032937140),thr 0xEFAE43F2 : Counter 0 statistics
 Counts: 2,
 MinTime: 81732 ms,
 MaxTime: 421045 ms,
 TotalTime: 502777 ms,
 AverageTime: 251388 ms
19:24:02(2032939444),thr 0xEFAE43F2 : Log finished

明显ms是错误的,继续在网上查询
查到如下代码:

#include  < windows.h >
#include  < iostream >
using   namespace  std;

void  main() {
 LARGE_INTEGER m_liPerfFreq={0};
    QueryPerformanceFrequency(&m_liPerfFreq); 
     
    LARGE_INTEGER m_liPerfStart={0};
    QueryPerformanceCounter(&m_liPerfStart);

    for(int i=0; i< 100; i++)
              cout << i << endl;

    LARGE_INTEGER liPerfNow={0};
    QueryPerformanceCounter(&liPerfNow);

    int time=( ((liPerfNow.QuadPart - m_liPerfStart.QuadPart) * 1000)/m_liPerfFreq.QuadPart);

 TCHAR buffer[100];
 wsprintf(buffer,"執行時間 %d millisecond ",time);
    MessageBox(NULL,buffer,"計算時間",MB_OK);
}

看看改改代码成不成,

主要的改动就是两处

             ///*--------------------------原代码----------------------------
             // return (0 < _snprintf(szString, nStringSize, "%02u:%02u:%02u(%I64d)", st.wHour, st.wMinute, st.wSecond, counter.QuadPart));
             ///*------------------------------------------------------------
            
            ///*-------------------------修改后代码-------------------------

             return  ( 0   <  _snprintf(szString, nStringSize,  " %02u:%02u:%02u(%08ums) " , st.wHour, st.wMinute, st.wSecond, counter.QuadPart * 1000 / m_nPerfFreq.QuadPart));
             ///*------------------------------------------------------------

             ///*--------------------------原代码----------------------------
             //     CSTLogFile::GetLogFile()->Write("Counter %d statistics/r/n/tCounts: %d,/r/n/tMinTime: %I64d ms,/r/n/tMaxTime: %I64d ms,/r/n/tTotalTime: %I64d ms,/r/n/tAverageTime: %I64d ms", 
             //         m_nCounterIndex, m_nCounter, m_MinTime.QuadPart, m_MaxTime.QuadPart, m_TotalTime.QuadPart, m_TotalTime.QuadPart / m_nCounter); 
             ///*------------------------------------------------------------
            
            ///*-------------------------修改后代码-------------------------

                unsigned  int  m_iMinTime = (unsigned  int )(m_MinTime.QuadPart * 1000 / m_nPerfFreq.QuadPart);
                unsigned  int  m_iMaxTime = (unsigned  int )(m_MaxTime.QuadPart * 1000 / m_nPerfFreq.QuadPart);
                unsigned  int  m_iTotalTime = (unsigned  int )(m_TotalTime.QuadPart * 1000 / m_nPerfFreq.QuadPart);
                unsigned  int  m_iAverageTime = (unsigned  int )(m_TotalTime.QuadPart  /  m_nCounter * 1000 / m_nPerfFreq.QuadPart);
                CSTLogFile::GetLogFile() -> Write( " Counter %d statistics/r/n/tCounts: %d,/r/n/tMinTime: %08u ms,/r/n/tMaxTime: %08u ms,/r/n/tTotalTime: %08u ms,/r/n/tAverageTime: %08u ms " , 
                    m_nCounterIndex, m_nCounter, m_iMinTime, m_iMaxTime, m_iTotalTime, m_iAverageTime); 
             ///*------------------------------------------------------------


主要就是×1000/系统的频率

改动后的日志
20 : 56 : 09 (00211262ms),thr  0x4F319EB6  :  =============================================
20 : 56 : 09 (00211263ms),thr  0x4F319EB6  : Log  is  started on  10.12 . 2005 , at  20 : 56 : 09 : 000 , executable: /ConnectDemo.exe (ProcID:  0x4f3162a2 ), compile time : Dec  10   2005   20 : 55 : 54
20 : 56 : 09 (00211263ms),thr  0x4F319EB6  :  *** Counter  0  at C:/ConnectDemo/ConnectDemoDlg.cpp, 66  initialized
20 : 56 : 09 (00211264ms),thr  0x4F319EB6  : Counter  0  started
20 : 56 : 09 (00211270ms),thr  0x4F319EB6  : Counter  0  check point at line  82 :  20239  ms from start, 20239ms from last checkpoint
20 : 56 : 09 (00211359ms),thr  0x4F319EB6  : Counter  0  check point at line  101 :  351048  ms from start, 330809ms from last checkpoint
20 : 56 : 09 (00211361ms),thr  0x4F319EB6  : Counter  0  stopped 353002ms from start, 1954ms from last checkpoint
20 : 56 : 09 (00211428ms),thr  0x4F319EB6  : Counter  0  started
20 : 56 : 09 (00211429ms),thr  0x4F319EB6  : Counter  0  check point at line  82 :  2306  ms from start, 2306ms from last checkpoint
20 : 56 : 09 (00211448ms),thr  0x4F319EB6  : Counter  0  check point at line  101 :  72327  ms from start, 70021ms from last checkpoint
20 : 56 : 09 (00211449ms),thr  0x4F319EB6  : Counter  0  stopped 74268ms from start, 1941ms from last checkpoint
20 : 56 : 10 (00212229ms),thr  0x4F319EB6  : Counter  0  statistics
    Counts:  2 ,
    MinTime:  00000020  ms,
    MaxTime:  00000095  ms,
    TotalTime:  00000115  ms,
    AverageTime:  00000057  ms
20 : 56 : 10 (00212229ms),thr  0x4F319EB6  : Log finished
^_^,正常了吧
修改后的 代码在这里

也许还有地方没有修改完,但是对于我来说能用了。。。