gpt4 book ai didi

windows - SetTimer 生成一个随机的 IDEvent

转载 作者:可可西里 更新时间:2023-11-01 09:39:56 25 4
gpt4 key购买 nike

当我尝试使用 Windows SetTimer 函数时,它会为计时器生成一个 IDEvent,即使我已经指定了一个!

这个:

SetTimer(0,999,10000,@timerproc); 

在:

procedure timerproc(hwnd: HWND; uMsg: UINT; idEvent: UINT_PTR;dwTime: DWORD); stdcall;
begin
KillTimer(0, idEvent);
showmessage(inttostr(idevent));
end;

返回:

随机数!

是否可以自己管理我的计时器而不是 Windows 为我选择?

非常感谢!

最佳答案

如果您想在单个例程中处理多个计时器事件,则通过特定窗口而不是特定例程来处理它:

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
FTimerWindow: HWND;
procedure TimerProc(var Msg: TMessage);
end;

...

procedure TForm1.FormCreate(Sender: TObject);
begin
FTimerWindow := Classes.AllocateHWnd(TimerProc);
SetTimer(FTimerWindow, 999, 10000, nil);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Classes.DeallocateHWnd(FTimerWindow);
end;

procedure TForm1.TimerProc(var Msg: TMessage);
begin
if Msg.Msg = WM_TIMER then
with TWMTimer(Msg) do
case TimerID of
999:
//
else:
//
end;
end;

关于windows - SetTimer 生成一个随机的 IDEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14050189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com