VC++中使用高精度定时器
编号:QA001022
建立日期: 1999年5月20日 最后修改日期:2001年9月2日
所属类别:
闫黎明:
VISUAL C++ 5.0
WINDOWS98
在早期,DOS可以使用一些系统中断,使得在控制应用方面虽然比较麻烦,但是由它的好处,比如可以使用中断将I/O的访问频率控制在几百甚至几十毫秒/次。
在WINDOWS环境下是没有中断功能的,微软在以前的VB、VC并没有这方面的功能,但后来推出了多媒体定时器,据说可以达到中断级的1毫秒时间控制,现在我的问题出来了:不了解多媒体定时器的使用方法,函数的参数,能不能有其他的更好的方法来实现这个功能?衷心感谢!
回答:
Windows下是可以使用中断的,但由于Windows的保护模式同DOS的实模式存在差别,所以Windows程序不能直接编写中断服务程序,而是通过DDK开发设备驱动,利用设备驱动来实现中断服务程序(参考:QA004006 "如何在win2000的设备驱动程序中使用中断调用")。DDK程序的编写同一般应用程序不同,你需要比较多的时间来学习
我想你大概是想利用多媒体定时器进行定时查询,那么主要是调用timeSetEvents函数,你可以提供一个Callback函数,这个Callback函数相当于中断处理函数。在Windows API说明中,你可以找到一系列time函数。具体的例子可以参考:http://www.codeguru.com/multimedia/mmTimers.shtml。
此问题由李海回答。
| |
|
|
| |
|
|