精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>技术精解:内存、进程、线程等>>win 9x 下实现高精度定时

主题:win 9x 下实现高精度定时
发信人: skyice()
整理人: wenbobo(2002-12-27 15:57:09), 站内信件
  可以实现 1 毫秒级的定时
//-----------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "mmsystem.h"

#define MilliSecond 1
#define Accuracy 1

#define Min(x,y) ((x<y)?x:y)
#define Max(x,y) ((x>y)?x:y)

#include "HighTimer.h"
//-----------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

UINT TimerID;
int count;
int TimerAccuracy;

TForm1 *Form1;
//-----------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//-----------------------------------------------------

void PASCAL TimerCallProc(UINT TimerID,UINT msg,
    DWORD dwUser,DWORD dwa,DWORD dwb)
{
    count++;
    Form1->Edit1->Text=count;
}
//-----------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TIMECAPS timecaps;
    int TimerResolution;

    if(timeGetDevCaps(&timecaps,sizeof(TIMECAPS))
        ==TIMERR_NOERROR)
        TimerAccuracy=Min(Max(timecaps.wPeriodMin,
            Accuracy),timecaps.wPeriodMax);
    timeBeginPeriod(TimerAccuracy);
    TimerResolution=1;
    TimerID=timeSetEvent(TimerResolution,TimerAccuracy,
    &TimerCallProc,1,TIME_PERIODIC);
}
//-----------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
    timeKillEvent(TimerID);
    timeEndPeriod(TimerAccuracy);
}
//-----------------------------------------------------

--
欢迎您到C语言版来!

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.99.80.146]

[关闭][返回]