Timer控件类似功能如何实现?(100分)

  • 主题发起人 主题发起人 3DDELPHI
  • 开始时间 开始时间
3

3DDELPHI

Unregistered / Unconfirmed
GUEST, unregistred user!
各位好:
用什么方法可以实现类似Timer控件类似功能,请各位高手指教?
谢谢!!!
 
参考WinApi函数SetTimer和消息WM_TIMER
 
用sleep(间隔时间)加循环也可以达到目的
while true and (not exit) do //exit是判断是否退出的boolean;
begin
dosometing; //要做的事情
sleep(1000); //间隔一秒,
end;

 
procedure TWelcome.Delay;
var CurrTime: TSystemTime;
Sec: Word;
begin
GetSystemTime(CurrTime);
Sec := CurrTime.wSecond + 2;//延时2秒,可更改
while Sec>CurrTime.wSecond do
GetSystemTime(CurrTime);
end;
 
多谢各位!
 
不对!
用windows API才是正道:
const
TIMER_ID = 1;
TIMER_RATE = 500;】




// Create a timer to flip the pages
if TIMER_ID <> SetTimer(h_Wnd, TIMER_ID, TIMER_RATE, nil) then
begin
Result := InitFail(h_Wnd, hRet, 'SetTimer FAILED');
Exit;
end;


然后处理WM_TIMER消息
 
张无忌先生:
你的做法也对,但是太占用CPU了,你可以看一下。
最好的实现方法就是利用线程,或者用API settimer,killtimer;
建议调用Windows API
 
你用 settimer,killtimer其实就是和TTimer一样吗,既然如此何必出这个题目了?
用线程也不好,如果多线程中,处如竞争状态这个时间线程被CPU挂起怎么办了?
 
那就用timer 好啦!
 
同意用线程
 
再次感谢大家关注,多谢!!!
 
后退
顶部