当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

<b>用C++ Builder举行切确计时</b>[VC/C++编程]

赞助商链接



  本文“<b>用C++ Builder举行切确计时</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

固然Win95下可视化开辟工具如VC、Delphi、C++ Builder等都有专用的按时器控件Timer,并且利用很便利,可以实现一定的按时功效,但最小计时精度仅为55ms,且按时器消息在多任务操作系统中的优先级很低,不能得到及时呼应,常常不能满意及时掌握环境下的利用.不过Microsoft公司

在Win32 API函数库中已经为用户供应了一组用于高精度计时的底层函数,假如用户利用得当,计时精度可到1ms.这个计时精度、关于普通的及时系统掌握完好可以满意要求.现将由C++ Builder 4.0供应的重新封装后的一组与时间相关的主要接口函数(函数名、参数、功效与Win32 API基本相同)阐明以下:

1.DWORD timeGetTime(void)

返回从Windows启动开始经过的毫秒数.最大值为232,约49.71

天.

2.MMRESULT timeSetEvent(

  UINT uDelay,
   UINT uResolution,
   LPTIMECALLBACK lpTimeProc,
   DWORD dwUser,
   UINT fuEvent
   )

该函数设置一个按时回调事件,此事件可以是一个一次性事件或周期性事件.事件一旦被激活,便调用指定的回调函数,成功后返回事件的标识符代码,不然返回NULL.参数阐明以下:

uDelay:以毫秒指定事件的周期.

UResolution:以毫秒指定延时的精度,数值越小按时器事件辨别率越高.缺省值为1ms.

LpTimeProc:指向一个回调函数.

DwUser:存放用户供应的回调数据.

FuEvent:指定按时器事件范例:

TIME_ONESHOT:uDelay毫秒后只产生一次事件

TIME_PERIODIC :每隔uDelay毫秒周期性地产闹事件.

3.MMRESULT timeKillEvent(UINT uTimerID)

该函数撤消一个指定的按时器回调事件.uTimerID标识要撤消的事件(由timeSetEvent函数返回的标识符).假如成功则返回TIMERR_NOERROR

,假如按时器时间不存在则返回MMSYSERR_INVALPARAM.

  void CALLBACK TimeProc(
   UINT uID,
   UINT uMsg,
   DWORD dwUser,
   DWORD dw1,
   DWORD dw2
   );

该函数是一个利用程序定义的回调函数,呈现按时器事件时该函数被调用.TimeProc是利用程序定义的函数名的占位符.利用该函数时要注意的是,它只能调用以下有限的几组API函数:PostMessage,timeGetSystemTime, timeGetTime, timeSetEvent,timeKillEvent,midiOutShortMsg, midiOutLongMsg,OutputDebugString.同时也不要利用完成时间很长的API函数,程序尽大概简短.

利用以上一组函数便可以完成毫秒级精度的计时和掌握(在C++Builder中利用时要将头文件mmsystem.h加到程序中).由于将按时掌握切确到几毫秒,按时器事件将占用大量的CPU时间和系统资源,所以在满意掌握要求的前提下,应尽大概将参数uResolution的数值增大.并且按时器及时掌握功效完成后要尽快释放.


  以上是“<b>用C++ Builder举行切确计时</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .