GetTickCount

GetTickCount

GetTickCount是一種函式。GetTickCount返回(retrieve)從作業系統啟動所經過(elapsed)的毫秒數,它的返回值是DWORD。

函式

函式原型:

DWORD GetTickCount(void);

VB版

VB聲明:

Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long

例如:實現延時

Public Sub Sleep(numa As Long)

Dim num1 As Long

Dim num2 As Long

Dim numb As Long

numb = 0

num1 = GetTickCount

Do While numa - numb > 0

num2 = GetTickCount

numb = num2 - num1

DoEvents

Loop

End Sub

C++版

DWORD k=::GetTickCount(); //獲取毫秒級數目

int se = k/1000; // se為秒

cout<<se<<endl;

庫檔案:kernel32.dll

C/C++頭檔案:winbase.h

windows程式設計中可以使用頭檔案windows.h

程式示例

//代替time函式來初始化隨機數生成器

#include <iostream>

#include <windows.h>

#include <WinBase.h>

#include <ctime>

using namespace std;

int main()

{

int i, k, r;

for (i = 0; i < 10; i++)

{

srand (GetTickCount());

cout<<endl;

for (k = 0; k < 5; k++)

{

r = rand ();

cout<<r<<endl;

}

}

return 0;

}

注意事項

GetTickcount函式:它返回從作業系統啟動到當前所經過的毫秒數,常常用來判斷某個方法執行的時間,其函式原型是DWORD GetTickCount(void),返回值以32位的雙字類型DWORD存儲,因此可以存儲的最大值是(2^32-1) ms約為49.71天,因此若系統運行時間超過49.71天時,這個數就會歸0,MSDN中也明確的提到了:"Retrieves the number of milliseconds that have elapsed since the system was started, up to 49.7 days."。因此,如果是編寫伺服器端程式,此處一定要萬分注意,避免引起意外的狀況(如需避免此種情況可使用Ctime類或者是系統API的SYSTEMTIME進行判斷)。

特別注意:這個函式並非實時傳送,而是由系統每18ms傳送一次,因此其最小精度為18ms。當需要有小於18ms的精度計算時,應使用StopWatch方法進行。

* 連續觸發200次,實測下來,最小間隔在15ms。

* 實際狀況應該是系統每秒觸發64次,間隔在15、16ms之間波動。

相關詞條

相關搜尋

熱門詞條

聯絡我們