WinAPI: SetTimer、KillTimer - 创建与移除高性能定时器
来源:互联网 发布:淘宝申请食品经营资质 编辑:程序博客网 时间:2024/05/21 11:25
//创建定时器函数的声明: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)指定的系统时间}); {这是个过程, 无返回值}应该先理解一下再举例:
SetTimer 的参数1: hWnd, 一般指定 Self.Handle 就可以了;
SetTimer 的参数2: nIDEvent 是某个定时器的标识符, 说明可以创建若干个定时器, 随便给个正整数即可;
SetTimer 的参数3: uElapse, 这相当于 VCL 中 Timer 类的 Interval 属性;
看来参数 1-3 还是非常简单, 不好理解的就是参数4: lpTimerFunc, 这是一个过程的地址.
任意一个过程的地址吗? 当然不是; 这个过程的参数结构是 Windows 系统规定的, 我们必须按规定去定义这个过程; 即使你用不到其中的参数也必须如此.
//举例: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;
- WinAPI: SetTimer、KillTimer - 创建与移除高性能定时器
- Delphi WinAPI: SetTimer、KillTimer - 创建与移除高性能定时器
- 定时器 settimer ontimer killtimer
- MFC 定时器用法 SetTimer、KillTimer
- setTimer和Killtimer定时器的应用
- setTimer和Killtimer定时器的应用
- SetTimer()KillTimer()
- VC中定时器的使用(SETTIMER,KILLTIMER,WM_TIMER消息)
- MFC定时器使用--SetTimer && KillTimer && 进度条CProgressCtrl
- 定时器:SetTimer与timeSetEvent
- SetTimer和KillTimer函数
- SetTimer and KillTimer
- SetTimer和KillTimer函数
- SetTimer killTimer用法
- settimer,ontimer,killtimer功能
- SetTimer和KillTimer
- settimer,ontimer,killtimer功能
- settimer ontimnr killtimer
- XmlSerializer 构造函数的性能问题
- STM32L系列产品技术资料与支持文件(分享)
- 编写自己的annotation,当前日期在指定的日期后,则执行
- 刚写完的博客,没法保存,丢了
- Java异常处理需要注意的几点
- WinAPI: SetTimer、KillTimer - 创建与移除高性能定时器
- 比对两张表一个比较好的SQL语句
- visifire 控件相关属性设置
- 内核:一个中断如何对应多个句柄
- 数据结构与算法整理之排序(一)
- 关于java中jdk中接口动态代理模式Proxy的剖析
- Spring3 rmi 实现
- java中如何使用asm动态的生成或修改一个class文件以及asm的架构思想
- asp.net c#去掉字符串的最后一个字符