本文实例讲述了VC中定时器的用法,分享给大家供大家参考。具体用法分析如下:
定时器在VC中的使用频繁,其原型为:
WINUSERAPI UINT WINAPI SetTimer ( HWND hWnd , UINT nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc);
hWnd 是欲设置定时器的窗体句柄。定时时间到时,系统会向该窗体发送WM_TIMER消息。
nIDEvent 定时器标识符。在一个窗体内可以使用多个定时器,不同的定时器根据nIDEvent来区分。
uElapse 定时时间,单位是毫秒。
lpTimerFunc 定时器的回调函数。如果该值为NULL,定时时间到时,定时器发送的消息WM_TIMER由窗体映像该消息的函数处理;否则由回调函数处理,说白一点,回调函数就是取代OnTimer的处理函数。
通常,我们在使用定时器时,只用到三个参数,即
UINT CWnd::SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)( HWND, UINT, UINT, DWORD) );
_AFXWIN_INLINE UINT CWnd::SetTimer(UINT nIDEvent, UINT nElapse, void (CALLBACK* lpfnTimer)(HWND, UINT, UINT, DWORD)) { ASSERT(::IsWindow(m_hWnd)); return ::SetTimer(m_hWnd, nIDEvent, nElapse, (TIMERPROC)lpfnTimer); }
以上的定现函数如下所示:
void CTestDlg::OnButtonStart() { SetTimer(1,1000,NULL);//启动定时器1,定时时间是1秒 }void CTestDlg::OnButtonStop() { KillTimer(1); //关闭定时器1。 }
void CTestDlg::OnTimer(UINT nIDEvent) { static int nTimer=0; CString strTmp=""; strTmp.Format("Timer: %d",nTimer++); CWnd *pWnd=GetDlgItem(IDC_STATIC_TIME); pWnd->SetWindowText(strTmp); 将Lable中设置新值,表明定时器已经工作。 CDialog::OnTimer(nIDEvent); }
回调函数的使用。
如果不想使用窗体的WM_TIMER消息函数处理,可以使用回调函数来取代,读者可以在上面例子的基础上,增加一个回调函数,以证实前面的讨论。
首先,定义一个回调函数,回调函数的定义必须按照如下格式。
void CALLBACK TimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime );
我的实现函数如下:
void CALLBACK TimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime ) { AfxMessageBox("Timer is running!");//定时器时间到,强出一对话框,表明定时器已经运行。 }
void CTestDlg::OnButtonStart() { // SetTimer(1,1000,NULL);//启动定时器1,定时时间是1秒 SetTimer(1,1000,(TIMERPROC)TimerProc);//用回调函数处理,此时对话框的消息处理函数不再处理。 }
希望本文所述对大家的VC程序设计有所帮助。
本文向大家介绍Android实现定时器的五种方法实例详解,包括了Android实现定时器的五种方法实例详解的使用技巧和注意事项,需要的朋友参考一下 一、Timer Timer是Android直接启动定时器的类,TimerTask是一个子线程,方便处理一些比较复杂耗时的功能逻辑,经常与handler结合使用。 跟handler自身实现的定时器相比,Timer可以做一些复杂的处理,例如,需要对有大量对
本文向大家介绍VC++进度条process Bar的用法实例,包括了VC++进度条process Bar的用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了VC进度条的用法实例,分享给大家供大家参考。具体实现代码如下: 希望本文所述对大家的VC++程序设计有所帮助。
本文向大家介绍vc中SendMessage自定义消息函数用法实例,包括了vc中SendMessage自定义消息函数用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了vc中SendMessage自定义消息函数用法,分享给大家供大家参考。具体如下: SendMessage的基本结构如下: 其中一些参数的由来如下: //typedef unsigned int UINT; //typede
本文向大家介绍C#中timer定时器用法实例,包括了C#中timer定时器用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#中timer定时器用法。分享给大家供大家参考。具体如下: 下面的代码通过Timer定时器每隔1000毫秒(1秒)触发一次事件 希望本文所述对大家的C#程序设计有所帮助。
本文向大家介绍Java 定时器(Timer,TimerTask)详解及实例代码,包括了Java 定时器(Timer,TimerTask)详解及实例代码的使用技巧和注意事项,需要的朋友参考一下 Java 定时器 在JAVA中实现定时器功能要用的二个类是Timer,TimerTask Timer类是用来执行任务的类,它接受一个TimerTask做参数 Timer有两种执行任务的模式,最常用的是sch
本文向大家介绍VC实现屏幕截词功能的方法详解,包括了VC实现屏幕截词功能的方法详解的使用技巧和注意事项,需要的朋友参考一下 VC程序设计中屏幕上的文字大都是由gdi32.dll的以下几个函数显示的:TextOutA、TextOutW、ExtTextOutA、ExtTextOutW。实现屏幕抓词的关键就是截获对这些函数的调用,得到程序发给它们的参数。 实现的方法有以下三个步骤: 一、得到鼠标的当前位