zoukankan      html  css  js  c++  java
  • timesetevent与timekillevent的用法

    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ExtCtrls, StdCtrls, mmsystem;

    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        Button1: TButton;
        Button2: TButton;
        Timer1: TTimer;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;
      acttime1,acttime2:cardinal;
      smmcount,stimercount,spcount:single;
      htimeid:integer;
      iten:integer;
      protimecallback:tfntimecallback;

      procedure timeproc(utimerid, umessage: uint; dwuser, dw1, dw2: dword) stdcall;
      procedure proendcount;


    implementation

    {$R *.DFM}

    //timesetevent的回调函数
    procedure proendcount;

    begin
      acttime2:=gettickcount-acttime1;
      form1.button2.enabled :=false;
      form1.button1.enabled :=true;
      form1.timer1.enabled :=false;
      smmcount:=60;
      stimercount:=60;
      spcount:=-1;

      timekillevent(htimeid);
    end;

    procedure timeproc(utimerid, umessage: uint; dwuser, dw1, dw2: dword) stdcall;
    begin
      form1.edit2.text:=floattostr(smmcount);
      smmcount:=smmcount-0.01;
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      button1.caption :='开始倒计时';
      button2.caption :='结束倒计时';
      button2.enabled :=false;
      button1.enabled :=true;
      timer1.enabled :=false;
      smmcount:=60;
      stimercount:=60;
      spcount:=60;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
      lgtick1,lgtick2,lgper:tlargeinteger;
      ftemp:single;
    begin
      button2.enabled :=true;
      button1.enabled :=false;
      timer1.enabled :=true;
      timer1.interval :=10;
      protimecallback:=timeproc;
      htimeid:=timesetevent(10,0,protimecallback,1,1);
      acttime1:=gettickcount;

      //获得系统的高性能频率计数器在一毫秒内的震动次数
      queryperformancefrequency(lgper);
      ftemp:=lgper/1000;
      iten:=trunc(ftemp*10);
      queryperformancecounter(lgtick1);
      lgtick2:=lgtick1;
      spcount:=60;

      while spcount>0 do
      begin
        queryperformancecounter(lgtick2);

        //如果时钟震动次数超过10毫秒的次数则刷新edit3的显示
        if lgtick2 - lgtick1 > iten then
        begin
          lgtick1 := lgtick2;
          spcount := spcount - 0.01;
          edit3.text := floattostr(spcount);
          application.processmessages;
        end;
      end;

    end;

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      edit1.text := floattostr(stimercount);
      stimercount:=stimercount-0.01;
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
      proendcount;

      //显示从开始记数到记数实际经过的时间
      showmessage('实际经过时间'+inttostr(acttime2)+'毫秒');
    end;

    end.

    http://blog.csdn.net/diligentcatrich/article/details/7008271

  • 相关阅读:
    Spring Security简介与入门Demo
    电商项目之多功能增删改查案例
    linux-用户管理
    zabbix3.4配置第三方邮件报警
    zabbix3.4配置客户端配置
    centos7上安装zabbix3.4的详细步骤与问题处理记录
    MyBatis日记(五):一对一关系,一对多关系
    MyBatis日记(四):MyBatis——insert、update、delete、select
    Python日记(二):Python之禅
    Python日记(一):拜见小主——Python
  • 原文地址:https://www.cnblogs.com/findumars/p/5218030.html
Copyright © 2011-2022 走看看