QueryPerformanceCounter 配合 QueryPerformanceFrequency 提供硬體級的高解析度計時器,精度可達微秒。本範例以「測量兩次滑鼠點擊間隔」為趣味示範,展示如何計算毫秒差值。
QueryPerformanceCounter(n1) 記錄起始計數。QueryPerformanceCounter(n2) 取得結束計數。n = n2 - n1 為原始計數間隔。QueryPerformanceFrequency(f) 取得每秒計數頻率。ms = n * 1000 div f。var
n1, n2, n, f: Int64;
b: Boolean;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
n := 0;
b := not b;
if b then
QueryPerformanceCounter(n1)
else
begin
QueryPerformanceCounter(n2);
n := n2 - n1;
end;
if n <> 0 then
begin
QueryPerformanceFrequency(f);
n := n * 1000 div f;
Caption := IntToStr(n) + ' ms';
end
else
Caption := '等待第二下...';
end;
作者最快記錄 151 ms,你能打破嗎?