您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:165 来源:vckbase.com

本文章共5088字,分4页,当前第2页,快速翻页:
 
  方式四:在精度要求较高的情况下,VC中可以利用GetTickCount()函数,该函数的返回值是 DWORD型,表示以ms为单位的计算机启动后经历的时间间隔。精度比WM_TIMER消息映射高,在较 短的定时中其计时误差为15ms,在较长的定时中其计时误差较低,如果定时时间太长,就好象死机一样,CPU占用率非常高,只能用于要求不高的延时程序中。如示例工程中的Timer4和Timer4_1。下列代码可以实现50ms的精确定时:
逆@风@者
       DWORD dwStart = GetTickCount();

       DWORD dwEnd   = dwStart;

       do

       {

          dwEnd = GetTickCount()-dwStart;

       }while(dwEnd <50);
为使GetTickCount()函数在延时或定时期间能处理其他的消息,可以把代码改为:
       DWORD dwStart = GetTickCount();

       DWORD dwEnd   = dwStart;

       do

       {

              MSG   msg;

              GetMessage(&msg,NULL,0,0);

              TranslateMessage(&msg); 

              DispatchMessage(&msg);

              dwEnd = GetTickCount()-dwStart;

       }while(dwEnd <50);
虽然这样可以降低CPU的占有率,并在延时或定时期间也能处理其他的消息,但降低了延时或定时精度。
  方式五:与GetTickCount()函数类似的多媒体定时器函数DWORD timeGetTime(void),该函数定时精 度为ms级,返回从Windows启动开始经过的毫秒数。微软公司在其多媒体Windows中提供了精确定时器的底 层API持,利用多媒体定时器可以很精确地读出系统的当前时间,并且能在非常精确的时间间隔内完成一 个事件、函数或过程的调用。不同之处在于调用DWORD timeGetTime(void) 函数之前必须将 Winmm.lib 和 Mmsystem.h 添加到工程中,否则在编译时提示DWORD timeGetTime(void)函数未定义。由于使用该 函数是通过查询的方式进行定时控制的,所以,应该建立定时循环来进行定时事件的控制。如示例工程中的Timer5和Timer5_1。
  方式六:使用多媒体定时器timeSetEvent()函数,该函数定时精度为ms级。利用该函数可以实现周期性的函数调用。如示例工程中的Timer6和Timer6_1。函数的原型如下:
       MMRESULT timeSetEvent( UINT uDelay, 

                               UINT uResolution, 

                               LPTIMECALLBACK lpTimeProc, 

                               WORD dwUser, 

                               UINT fuEvent )
  该函数设置一个定时回调事件,此事件可以是一个一次性事件或周期性事件。事件一旦被激活,便调用指定的回调函数, 成功后返回事件的标识符代码,否则返回NULL。函数的参数说明如下:
       uDelay:以毫秒指定事件的周期。

       Uresolution:以毫秒指定延时的精度,数值越小定时器事件分辨率越高。缺省值为1ms。

       LpTimeProc:指向一个回调函数。

       DwUser:存放用户提供的回调数据。

       FuEvent:指定定时器事件类型:

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

       TIME_PERIODIC :每隔uDelay毫秒周期性地产生事件。
 
本文章更多内容<<上一页 - 1 - 2 - 3 - 4 - 下一页>>
相关文章

DLL初学者指南(非MFC)
如何使用BHO定制你的Internet Explorer浏览
使用socket套接字时的两点经验
Visual Basic .NET 中多 Windows 窗体的同步
可以替代系统记事本的程序
论程序设计方法
图形显示特技算法
SQL Server 索引结构及其使用(三)
简单实用的Xml解析类
一个实用的CToolBar扩展类CToolBarEx
模拟 Windows 下 CPU 占用率的控件及其实现
自动隐藏停泊窗体实现
Buffer Overruns,portability和其它...
在你的程序中如何使用CButtonST类
QQ2006 界面编程之鸡蛋里挑骨头
用 Web 服务进行二进制序列化和 BinaryForm
DLL头文件的格式和应用
如何在 C# 中加载自己编写的动态链接库
软件测试悖论
VC 操作 SQL Server 主从表

相关评论


本文章所属分类:首页 VC++

  热门关键字: