分类: WINDOWS
2010-08-24 10:24:50
应该先理解一下再举例://创建定时器函数的声明:
SetTimer(
hWnd: HWND; {与定时器相关联的窗口句柄}
nIDEvent: UINT; {指定一个非 0 的定时器标识符}
uElapse: UINT; {指定间隔时间, 单位是毫秒}
lpTimerFunc: TFNTimerProc {每到时间后, 要调用的函数的指针}
): UINT; {返回定时器标识符; 失败返回 0}
//移除定时器函数的声明:
KillTimer(
hWnd: HWND; {与定时器相关联的窗口句柄}
uIDEvent: UINT {定时器标识符}
): BOOL;
//处理 WM_TIMER 消息的回调函数的格式:
TimerProc(
hWnd: HWND; {与定时器相关联的窗口句柄}
uMsg: UINT; {WM_TIMER 消息}
idEvent: UINT; {定时器的标识符}
Time: DWORD {以世界时间公约格式(UTC)指定的系统时间}
); {这是个过程, 无返回值}
//举例:
var
i: Integer;
//先定义回调函数
procedure MyTimerProc(hWnd: HWND; uMsg: UINT; idEvent: UINT; Time: DWORD);
begin
Form1.Text := IntToStr(i);
Inc(i);
end;
//创建定时器
procedure TForm1.Button1Click(Sender: TObject);
begin
SetTimer(Handle, 1, 10, @MyTimerProc); {每 1/100 秒调用一次 MyTimerProc}
end;
//删除定时器
procedure TForm1.Button2Click(Sender: TObject);
begin
KillTimer(Handle, 1); {创建时指定的定时器标识是 1, 这里必须要一致}
end;
//如果回调过程是窗体类的一个方法, 需要这样:
var
i: Integer;
//先定义回调函数
procedure TForm1.MyTimerProc(hWnd: HWND; uMsg: UINT; idEvent: UINT; Time: DWORD);
begin
Text := IntToStr(i);
Inc(i);
end;
//创建定时器
procedure TForm1.Button1Click(Sender: TObject);
begin
SetTimer(Handle, 1, 10, @TForm1.MyTimerProc); {每 1/100 秒调用一次 MyTimerProc}
end;
//删除定时器
procedure TForm1.Button2Click(Sender: TObject);
begin
KillTimer(Handle, 1); {创建时指定的定时器标识是 1, 这里必须要一致}
end;