cr99999.com
生活小知识 一切都给您解释的明明白白
当前位置:首页 >> timeSetEvent >>

timeSetEvent

timeSetEvent 是一种精确度非常高的定时器,与windows定时器不同的是,多媒体定时器不使用容易丢失的窗口消息,它提供另外两种方式来触发。

function timeSetEvent(uDelay, uResolution: UINT; //uDelay 定时器触发的时间间隔

//uResolution 定时器使用的分辨率(精确度)

lpFunction: TFNTimeCallBack; //若触发方式为回调函数,则为回调函数的指针,

//若采用事件方式,则为 event object 的handle

dwUser: DWORD; //可为任意变量或者结构地址,他会在定时器触发的时候回传给回调函数

uFlags: UINT //定时器类型,共有两组旗标

): MMRESULT; stdcall; //返回值,成功的话,返回非零值,代表定时器的编号,失败返回0

()

当某个定时器已经完成了自己的任务,需要退出的时候,只要调用 timeKillEvent 函数,传入它的定时器编号即可

function timeKillEvent(uTimerID: UINT): MMRESULT; stdcall; //TimerID 建立定时器时,所返回的编号。

//返回值,若定时器编号无误,返回TIMERR_NOERROR表示成功释放,否则返回MMSYSER_INVALPARAM

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, MMSystem;

type

TForm1 = class(TForm)

mmo1: TMemo;

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MMTimerID : Integer;

iMMTimerInc: Integer; //累计触发次数

Form1: TForm1;

implementation

{$R *.dfm}

procedure MMTimerProc(uTimerID,uMessage:UINT;dwuser,dwl1,dw2:DWORD);stdcall;

begin

Inc(iMMTimerInc);

//这里做你想做的事,但是不要在这里直接操作窗体可视控件,因为timeSetEvent的回调是在线程中进行的

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

MMTimerID := timeSetEvent(1000,0,@MMTimerProc,0,TIME_PERIODIC OR TIME_CALLBACK_FUNCTION);

end;

procedure TForm1.FormDestroy(Sender: TObject);

begin

if MMTimerID<>0 then

timeKillEvent(MMTimerID);

end;

end.

中付支付 | 井冈山红色文化培训 | 北京翻译 | 养生网 | 压缩垃圾车 | 笔趣阁 | 网站首页 | 网站地图
All rights reserved Powered by 生活小知识 www.dainaini.com
copyright ©right 2010-2021。
网站名词解释内容来自网络,如有侵犯请联系客服。zhit325@126.com