精华内容
下载资源
问答
  • 多媒体定时器

    2016-08-18 10:02:36
    本程序实现多媒体定时器,并对多媒体定时器的精度进行测试。MFC框架
  • linux多定时器多线程

    2018-12-07 22:52:38
    Linux中通过多线程多定时器来完成不同的任务;Linux中通过多线程多定时器来完成不同的任务;
  • MFC定时器 1.普通定时器 ontimer 2.多媒体定时器 timeSetEvent 多媒体定时器比普通定时器精确,能够达到1ms的精度

    MFC定时器

    1.普通定时器
    ontimer
    2.多媒体定时器
    timeSetEvent
    多媒体定时器比普通定时器精确,能够达到1ms的精度

    展开全文
  • 这个例子使用了多媒体定时器,并且在界面上面显示多媒体定时器和普通定时器的效果对比,最后显示在毫秒级别的任务,多媒体定时器任务比普通定时器精度更高;
  • 定时器在实际工程项目中有广泛的应用,但是MFC提供的定时器限制太多。所以本人根据实际项目自定义了一个定时器,能实现多对象多定时器。适用于需要使用定时器的大多数场合。
  • vc 定时器 Timer 多媒体定时器 毫秒 ms
  • C#调用多媒体定时器

    热门讨论 2016-06-25 18:19:13
    C#调用采用C++/CLR封装的多媒体定时器的例子及封装库文件。可用Winform和WPF程序中。经过测试可用。
  • windows 高精度多媒体定时器,支持毫秒精确定时
  • multi-timer, 多定时器是Pebble的最佳定时器和秒表应用 多定时器是Pebble的最佳定时器和秒表应用。你可以根据需要创建任意数量的独立计时器和秒表。随着 3.0的发布,计时器将在完成时启动应用程序,这意味着你可以以...
  • C#版本多媒体定时器

    热门讨论 2011-12-01 09:31:02
    MmTimer 是一个多媒体定时器的C#简单封装。 使用这个定时器,你可以得到1ms精度的单次延时或周期定时。最初是想用来做播放midi文件的时钟,当然你也可以用它来做任何它能做到的事情。
  • 定时器复用一个硬件定时器,便于实际开发使用,占用资源少!
  • 一、多媒体定时器的使用多媒体定时器不依赖消息机制,而是有TimeSetEvent()产生一个独立的线程,在一定的中断次数到达后,直接调用预先设置的回调函数进行处理,而不必等待应用程序的消息队列为空,保证的定时器的...

    一、多媒体定时器的使用

    多媒体定时器不依赖消息机制,而是有TimeSetEvent()产生一个独立的线程,在一定的中断次数到达后,直接调用预先设置的回调函数进行处理,而不必等待应用程序的消息队列为空,保证的定时器的实时相应,是一种很理想的高精度定时器,可以实现精度为1ms的定时精度。

    1.多媒体定时器的使用

    首先要包含MMSystem.h头文件,还要添加以下代码
    #pragma comment(lib,"winmm.lib")
    

    启动多媒体定时器原型

    MMRESULT timeSetEvent( UINT uDelay, UINT uResolution, LPTIMECALLBACK lpTimeProc, WORD dwUser, UINT fuEvent )

    参数说明:
    uDelay:以毫秒指定时的周期
    Uresolution:以毫秒指定延时的精度,数值越小定时器事件分辨率越高。缺省值为1ms。
    LpTimeProc:指向一个回调函数,该回调函数包含需要定时执行的代码。
    DwUser:存放用户提供的回调数据。
    FuEvent:指定定时器事件类型:
    TIME_ONESHOT:uDelay毫秒后只产生一次事件。
    TIME_PERIODIC :每隔uDelay毫秒周期性地产生事件。

    例:
    UINT TimerID = timeSetEvent(1,1(LPTIMECALLBACK)MMTimerProc,(DWORD)this,TIME_PERIODIC);

    停止多媒体定时器
    timeKillEvent(TimerID);

    多媒体定时器回调函数

    void CALLBACK CMMTimerDlg::MMTimerProc(UINT uID,UINT uMsg,DWORD dwUsers,DWORD dw1,DWORD dw2)
    {
        CXXX *pDlg = (CMMTimerDlg*)(dwUsers);
        //添加你的代码
    }

    此函数一定要声明为静态函数

    二.普通定时器

    开启普通定时器原型
    UINT SetTimer(UINT nIDEvent,UINT nElapse,void ( CALLBACK* lpfnTimer )(HWND, UINT,UINT,DWORD) = NULL )

    参数说明:
    nIDEvent:非0值标识Timer的id 。
    nElapse:以毫秒为单位的定时间隔时间
    lpfnTimer 指向定时事件到达时调用的函数的指针,如果为NULL,那么调用WM_TIMER响应函数OnTimer()。

    例:
    SetTimer(1,200,NULL); //设置并启动一个时间间隔为200ms的定时器。消息响应函数为OnTimer()
    SetTimer(2,1000, TimerProc ); //设置并启动一个实间间隔为1s的定时器,该定时器的响应函数为TimerProc。

    停止定时器
    KillTimer(TimerID); //TimerID为要结束的定时器ID号

    普通定时器回调函数

    若SetTimer第三个参数为NULL则不需要自己写回调函数,定时器时间到将产生WM_TIMER消息

    自己定义回调函数
    例:
    SetTimer(1,1,(TIMERPROC)WMTimerProc);

    void CALLBACK CMMTimerDlg::WMTimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
    {
        CMMTimerDlg *pDlg = (CMMTimerDlg*)(AfxGetApp()->m_pMainWnd);
       //添加你的代码
    }

    三、多媒体定时器与普通定时器比较

    定时周期1ms
    定时周期1ms

    定时周期10ms
    定时周期10ms

    定时周期100ms
    定时周期100ms

    定时周期1000ms
    定时周期1000ms

    我们可以看到普通定时器根本无法达到1ms的分辨率,12多秒过去了才产生700多个中断。
    当定时周期大于100ms时,普通定时器才处于可用状态
    当定时周期大于1秒时,普通定时器与多媒体定时器相差不大
    所以当你需要定时的周期小于1秒时,还是建议使用多媒体定时器。定时精度相当高,官方称可以达到1ms的精度。实测基本属实。

    展开全文
  • VB多媒体定时器实验 ,巩固对定时器的理解
  • VC多媒体定时器实例

    热门讨论 2010-04-17 17:18:39
    利用VC多媒体定时器编写的定时器小程序,可供用VC进行精确定时或者定时控制,实时控制的编程参考。内附详细的过程说明
  • VC6.0多媒体定时器个)

    热门讨论 2012-03-09 20:03:02
    使用VC6.0开发的高精度多媒体定时器,这里创建了定时器。并控制对话框资源。
  • mfc多媒体定时器使用

    2019-07-03 21:56:57
    本文所用源代码在这里 1、由于需求,settimer在...2、用多媒体定时器 3、使用方法: 头文件和库: #include <MMSystem.h> #pragma comment(lib,"winmm") 2. 声明响应函数 MMRESULT Timer2; s...

    本文所用源代码在这里

     

    1、由于需求,settimer在毫秒级别的定时效果精度差,不能满足要求

    2、用多媒体定时器

    3、使用方法:

    1. 头文件和库:
            #include <MMSystem.h>        
    
            #pragma comment(lib,"winmm")

         2. 声明响应函数

    	MMRESULT Timer2;
    	static void CALLBACK CtimerDlg::timer2proc(
    		UINT uDelay,
    		UINT uResolution,
    		LPTIMECALLBACK lpTimeProc,
    		DWORD_PTR dwUser,
    		UINT fuEvent);

      3. 设置定时器

    Timer2=timeSetEvent(10,1,(LPTIMECALLBACK)timer2proc,(DWORD_PTR)this,TIME_PERIODIC);

    4. 定时器响应函数

    void CALLBACK CtimerDlg::timer2proc(UINT uDelay,
    	UINT uResolution,
    	LPTIMECALLBACK lpTimeProc,
    	DWORD_PTR dwUser,
    	UINT fuEvent)
    {
    	PtrC->m_timer2++;
    	PtrC->UpdateData(FALSE);//这一句要在release模式下运行无问题
    }

    5. updatedata 问题

    在debug模式下:

    解决办法:

    • release模式下无问题
    • 或者把updatedata改为
    	CString str;
    	str.Format(_T("%d"),PtrC->m_timer2);
    	PtrC->GetDlgItem(IDC_EDIT2)->SetWindowTextW(str);

    方法原因:不清楚

    解决办法来源:https://blog.csdn.net/m0_37686528/article/details/84572450
     

    6. 在mfc中队普通定时器和多媒体定时器进行对比效果:很明显,多媒体定时器精度更高

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,124
精华内容 5,249
关键字:

多定时器