說白了就是三個函數的使用:
SetTimer(20, 20, 0); //第一個20表示此定時器的標識符,第二個20表示你要定的時間,第三個不用管,設0即可。
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> 版本
大家多這個版本多半不會陌生,這應該是最常用的執行時間測試方法了,能精確到ms級。
在程序運行時打印到屏幕上的函數TRACE()
TRACE("距離:%d",m_DIST[i]);//在輸出欄輸出信息。
就是記錄日志信息的。%s在程序執行的時候替換成address對應的值。%d替換成函數WSAGetLastError()返回的錯誤碼。
總體翻譯過來就是Server "address" Can't Find Code="WSAGetLastError()"
具體是寫到文件裡邊,還是輸出到標准輸出即屏幕上,這個要看TRACE的實現了。
還有一個定時的方法,用sleep()函數實現。調用windows.h