我需要精确到1毫秒

解决方案 »

  1.   

    GetTickCount()
    在看看精华帖子
    http://community.csdn.net/Expert/topic/2663/2663023.xml?temp=.6479151
      

  2.   

    1、首先调用QueryPerformanceFrequency函数取得高精度运行计数器的频率f。单位是每秒多少次(n/s),此数一般很大。    
    2、在需要定时的代码的两端分别调用QueryPerformanceCounter以取得高精度运行计数器的数值n1,n2。两次数值的差值通过f换算成时间间隔,t=(n2-n1)/f。    
      

  3.   

    建议用
    QueryPerformanceFrequency()

    QueryPerformanceCounter()
    来生成已流逝的时间,可达到ns每单位
      

  4.   

    http://www.pconline.com.cn/pcedu/empolder/gj/vc/0406/395529.html
      

  5.   

    1.建议用多媒体线程
    可以精确到1ms但是windows3层的定时都会由于其他应用的打断而造成不准.
    2.如果要求相当精确!在98下可用VxD来解决,因为它用的是BIOS时钟的中断,在windows0层运行,不受其他应用程序的打扰
    3.在2000/XP下不能用VXD只能用WDM来提供0层的定时中断.先简要写到这,如果需要详细资料,可与[email protected]联系
      

  6.   

    GetTickCount结合多线程,可以做出相当精确的计时器。wisdom_z你用驱动程序来做,是个好办法,最好采用98/NT通用的WDM动态加载,至于Vxd,现在用95的人有几个?
      

  7.   

    用GetTickCount()
    比较合适!结合多线程
      

  8.   

    用QueryPerformanceCounter两次取得时间的差,可以精确到微秒。
    LARGE_INTEGER  litmp ;
    LONGLONG  QPart1,QPart2 ;
    double d=0;
    QueryPerformanceCounter(&litmp) ; 
    // 获得初始值
    QPart1 = litmp.QuadPart ;
    while (d<40)//你想要的时间
    {
        QueryPerformanceCounter(&litmp) ; 
        QPart2 = litmp.QuadPart ;
        d=(double)(QPart2 - QPart1);
    }