說白了就是三個函數的使用:
void CLMS511_interfaceDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: Add your message handler code here and/or call default if(nIDEvent == 20) //這個20是第一個20. { DrawData(); if(MySSocket.StopFlag) SendServer(); } CDialog::OnTimer(nIDEvent); } KillTimer(20); //銷毀標示符為20的定時器
說明:
SetTimer()定時器的第一個參數是定時器標識,可用任一非0的整數,第二個參數是定時器的時間間隔,單位是毫秒.第三個參數取值可以是NULL,
這時WM_TIMER的消息加入應用程序的消息隊列中,由CWnd類對象處理 例如 SetTimer(1,1,NULL)的時間間隔是1毫秒
下面例舉一下定時函數的種類:
Windows API SetTimer(HWND,UNIT,UINT,TIMERPROC); 參數意義: 1.記時器所在窗口句柄 2.序號 3.記時周期 4.記時器響應函數
CWnd類的 CWnd::SetTimer UINT SetTimer( UINT nIDEvent, //定時器的標識符 UINT nElapse, //所要定時的時間 void (CALLBACK EXPORT* lpfnTimer)( HWND, UINT, UINT, DWORD) );
下面是C++中如何測一個程序運行的時間舉例:
unsigned long ticks1,ticks2; 在你要測試的開頭寫上 ticks1 = GetTickCount(); 測試部分結束時寫上 ticks2 = GetTickCount();
ticks2-ticks1就是所用時間 加上這個頭文件Winbase.h
下面再介紹一種測量程序執行時間的辦法:
<time.h> 版本
clock_t start = clock(); 2./*code to be tested*/ 3.clock_t end = clock(); 4.cout<<end - start<<endl;
大家多這個版本多半不會陌生,這應該是最常用的執行時間測試方法了,能精確到ms級。
在程序運行時打印到屏幕上的函數TRACE() TRACE("距離:%d",m_DIST[i]);//在輸出欄輸出信息。
就是記錄日志信息的。%s在程序執行的時候替換成address對應的值。%d替換成函數WSAGetLastError()返回的錯誤碼。 總體翻譯過來就是Server "address" Can't Find Code="WSAGetLastError()" 具體是寫到文件裡邊,還是輸出到標准輸出即屏幕上,這個要看TRACE的實現了。
還有一個定時的方法,用sleep()函數實現。調用windows.h