SetTimer 和 OnTimer 的使用】的更多相关文章

最近在公司做一个MFC项目,因为是MFC新手,所以在这里记录一些最近用到和学到的东西留着以后查阅. 今天遇到的一个问题是要在窗口刚刚初始化完成时自动检测一个配置文件是否存在(实际上就是检测是不是首次登陆,首次登陆时创建这个配置文件),如果不存在就弹出MessageBox提醒用户完成配置.检测配置文件是否存在非常容易实现,直接使用CFileFind类的FindFile函数确定文件是否存在.困难的是如何在窗口初始化完成时自动弹出提示框.我首先想到的是将弹出提示框的功能加在主窗口的OnInitDial…
Timer Events in MFC Applications Event timers are always handy to have around and useful in nearly every project. When a timer is readily available, such as the Timer control in Visual Basic, you find all kinds of reasons to use one in an application…
本文总结来源出自鸡啄米,感谢鸡啄米.来源:http://www.jizhuomi.com/software/232.html 定时器简介 定时器,可以帮助开发者或者用户定时完成某项任务.在使用定时器时,我们可以给系统传入一个时间间隔数据,然后系统就会在每个此时间间隔后触发定时处理程序,实现周期性的自动操作.例如,我们可以在数据采集系统中,为定时器设置定时采集时间间隔为1个小时,那么每隔1个小时系统就会采集一次数据,这样就可以在无人操作的情况下准确的进行操作.  MFC定时器 VS2010编程中,…
背景: windows中使用VC++6.0制作了个交互界面向下位机定时发送数据及显示下位机上传的数据.定时发送则需要使用定时器. 本文只做记录如何调用,原理以后再深究. 正文: 首先,我生成的窗体类名为CTestDlg; 在需要使用定时器的地方,譬如按键函数里设置定时器: SetTimer(1,1000,NULL); // 参数1:下文说明其作用. 1000为1000ms. SetTimer(2,500,NULL); // 参数1:下文说明其作用. 500为500ms. 然后在以下对应类的".c…
什么时候我们需要用到SetTimer函数呢?当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数 了.使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以此时间间隔周期性触发程序.通常有两种方法来实现:发送WM_TIMER消息和调用应用程序定义的回调函数. 1.1 用WM_TIMER来设置定时器 先请看SetTimer这个API函数的原型 UINT_PTR SetTimer( HWND hWnd,          // 窗口句柄 UINT_PTR…
转自:http://blog.csdn.net/ellor/article/details/1714741 Timer事件,即定时器事件,是在游戏编程中,常常使用的一个事件.借助它能够产生定时运行动作的效果.这篇文章,就和大家一起探讨一下怎样使用SetTimer()函数. 1.SetTimer定义在那里? SetTimer表示的是定义个定时器.依据定义指定的窗体,在指定的窗体(CWnd)中实现OnTimer事件,这样,就能够对应事件了. SetTimer有两个函数.一个是全局的函数::SetTi…
原文地址:http://www.w3c.com.cn/%E6%B1%82%E5%8A%A9%EF%BC%9A%E5%AF%B9%E8%AF%9D%E6%A1%86%E4%B8%8Boninitdialog%E4%B8%AD%E4%BD%BF%E7%94%A8settimer%E6%97%A0%E6%95%88 环境VC2008,在文档视图结构中的菜单上加了菜单用于弹出一个派生自CDialog的对话框,响应加到了frame窗口中.     在OnInitDialog中使用SetTimer设置定时器…
1 )用WM_TIMER来设置定时器 先请看SetTimer这个API函数的原型 UINT_PTR SetTimer( HWND hWnd, // 窗口句柄 UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器 UINT uElapse, // 时间间隔,单位为毫秒 TIMERPROC lpTimerFunc // 回调函数 ); 例如 SetTimer(m_hWnd,1,1000,NULL); //一个1秒触发一次的定时器 在MFC程序中SetT…
转会:http://blog.csdn.net/ellor/article/details/1714741 Timer事件,即定时器事件,是在游戏编程中.常常使用的一个事件.借助它能够产生定时运行动作的效果.这篇文章.就和大家一起探讨一下怎样使用SetTimer()函数. 1.SetTimer定义在那里? SetTimer表示的是定义个定时器.依据定义指定的窗体,在指定的窗体(CWnd)中实现OnTimer事件.这样.就能够对应事件了. SetTimer有两个函数.一个是全局的函数::SetTi…
SetTimer(1,300,NULL); void CchangeDisplayDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CDialog::OnTimer(nIDEvent); } 1.启动定时器. 启动定时器就需要使用CWnd类的成员函数SetTimer.CWnd::SetTimer的原型如下: UINT_PTR SetTimer(             UINT_PTR nIDEvent,       …
1.SetTimer定义在那里? SetTimer表示的是定义个定时器.根据定义指定的窗口,在指定的窗口(CWnd)中实现OnTimer事件,这样,就可以相应事件了. SetTimer有两个函数.一个是全局的函数::SetTimer() UINT SetTimer(      HWND hWnd,              // handle of window for timer messages      UINT nIDEvent,          // timer identifier…
什么时候我们需要用到SetTimer函数呢?当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了. 使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以此时间间隔周期性触发程序.通常有两种方法来实现:发送WM_TIMER消息和调用应用程序定义的回调函数. 1.1 用WM_TIMER来设置定时器 先请看SetTimer这个API函数的原型 UINT_PTR SetTimer(  HWND hWnd,              // 窗口句柄  UIN…
在编程时,会经常使用到定时器.使用定时器的方法比较简单,通常告诉Windows一个时间间隔,然后WINDOWS以此时间间隔周期性触发程序.通常有两种方法来实现:发送WM_TIMER消息和调用应用程序定义的回调函数. 1.1 用WM_TIMER来设置定时器 先请看SetTimer这个API函数的原型 UINT_PTR SetTimer( HWND hWnd, // 窗口句柄 UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器 UINT uElaps…
如果SetTimer的时间间隔为t,其响应事件OnTimer代码执行一遍的时间为T,且T>t.这样,一次未执行完毕,下一次定时到,这时候程序会如何执行? 可能的情况:1.丢弃还未执行的代码,开始新的执行:2.不丢弃,Timer消息进入消息队列排队,等到原来的代码执行完毕后,马上开始新的执行:3.重入,就是原来的还继续执行,同时又开始一个新的执行: 答案:第二个,或者,第一个丢弃.不过丢弃的情况是, 消息队列满了, 第二次的消息没进去. void COnTimer1Dlg::OnTimer(UIN…
OnTimer()其实是用来响应WM_TIMER消息的,其实OnTimer()就是一个回调函数,不过是系统默认的,当用户使用SetTimer()函数设定一个定时器的时候,只要是第三个参数为NULL,则系统就会调用默认的回调函数OnTimer(). 若不是NULL,则需要自己编写回调函数. 例如: // 自定义回调函数 void CALLBACK TimerP(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime){     cout<<"定时器…
原文链接:http://www.cnblogs.com/zhangpengshou/archive/2009/04/05/1429770.html 一.SetTimer表示的是定义个定时器.根据定义指定的窗口,在指定的窗口(CWnd)中实现OnTimer事件,这样,就可以相应事件了. SetTimer有两个函数. ①一个是全局的函数::SetTimer() UINT SetTimer(HWND hWnd, // handle of window for timer messagesUINT nI…
|   版权声明:本文为博主原创文章,未经博主允许不得转载. SetTimer是一种API函数,位于user32.dll中.你想每隔一段时间执行一件事的的时候,你可以使用它. 使用定时器的方法比 较简单,通常告诉Windows一个时间间隔,然后Windows以此时间间隔周期性触发程序.通常有两种方法来实现:发送 WM_TIMER消息和调用应用程序定义的回调函数.不需要指定定时器时,可以调用对应的KillTimer函数销毁指定的时钟.(也就是 说你在某个函数中使用了SetTimer函数的话,并且指…
OnTimer不是多线程. OnTimer是以SendMessage的方式发送消息到消息队列. sendMessage必须等待对话框响应完消息后才返回.…
在控制台应用程序中,SetTimer的函数原型为: UINT_PTR SetTimer( HWND hWnd, // handle to window UINT_PTR nIDEvent, // timer identifier UINT uElapse, // time-out value TIMERPROC lpTimerFunc // timer procedure ); 具体的解释可以看MSDN,主要是第四个参数,定义的参数类型为 TIMERPROC VOID CALLBACK Time…
一直很困惑一个问题: 我设置了一个10秒的定时器,可是被调用的函数要花费30秒, 那待调用的函数第二次是什么时候调用的呢? 20秒, 40秒, 还是50秒呢.... 所以我进行了实验. 我写了一个类 CExecSqlTimer, 这里类封装了.setitime. 这个类创建一个线程来调用待调用函数. CExecSqlTimer *time = new CExecSqlTimer; time->SetInterval( * ); time->Start(); 待调用函数: BOOL CExecS…
>_< : 这里用SetTimer函数自动运行![注意添加在里面的回掉函数函数] UINT SetTimer( HWND hWnd, // 指向窗口句柄 UINT nIDEvent, // 时钟标识 UINT uElapse, // 时间间隔 (毫秒) TIMERPROC lpTimerFunc // 指向回调函数的地址 ); KillTimer(UINT nIDEvent); // 时钟标识 VOID CALLBACK playproc( HWND hwnd, // handle of wi…
今天犯了一个粗心的错误,在无窗口线程中,SetTimer中设置计时器ID,而WM_TIMER消息响应函数中得到的计时器ID却不是之前设置的计时器ID. 对应计时器ID的输出的是一个随机数字. 原来在msdn中 nIDEvent [in] Specifies a nonzero timer identifier. If the hWnd parameter is NULL, and the nIDEvent does not match an existing timer then it is i…
SetTimer函数用于创建一个计时器,KillTimer函数用于销毁一个计时器.计时器属于系统资源,使用完应及时销毁. SetTimer的函数原型如下:UINT_PTR SetTimer( HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc ) ; 其中 hWnd是和timer关联的窗口句柄,此窗口必须为调用SetTimer的线程所有:如果hWnd为NULL,没有窗口和timer相关联并且nIDEvent参数被忽略…
Timers (SetTimer and CreateWaitableTimer) in Windows   SetTimer The following example creates a timer (that is not attached to a window) whose Timer Procedure creates 20 Message Boxes #include <windows.h> class foo_class { static int counter; public…
一般来说,在MFC中开启一个UI线程可以用以下代码: m_pCameraThread = AfxBeginThread(RUNTIME_CLASS(CCameraThread)); if (!m_pCameraThread->PostThreadMessage(UM_VERIFY_AVAILABILITY, NULL, NULL)) { Sleep(); } 但是,在ontimer的一个case中,不能同时顺序启动两个上述UI线程,建议启动不同的UI线程放在不同的case中顺序执行,否则在deb…
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); proc…
位于user32.dll中,可以每隔一段时间执行一段时间执行一件事的时候,可以使用它. 使用定时器,通常告诉Windows一个时间间隔,然后Windows以此时间间隔周期性触发程序. 发送WM_TIMER消息和调用应用程序定义的回调函数.不需要指定定时器时,可以调用对应的KillTimer函数销毁指定的时钟. setTimer创建或设置一个定时器,该函数创建的定时器与Timer控件(定时器控件)效果相同. SetTimer 函数的原型: UINT_PTR SetTimer( HWND hWnd,…
1.用WM_TIMER来设置定时器   SetTimer函数的原型 UINT_PTR SetTimer( HWND hWnd,                      // 窗体句柄 UINT_PTR nIDEvent,          // 定时器ID,多个定时器时,能够通过该ID推断是哪个定时器 UINT nElapse,                     // 时间间隔,单位为毫秒 TIMERPROC lpTimerFunc  // 回调函数 ); 返回值: 类型:UINT_PT…
procedure Timertodo(var messag:Tmessage);message WM_TIMER; procedure TForm1.FormCreate(Sender: TObject);beginsettimer(form1.Handle,1001,600,nil);end; procedure TForm1.Timertodo;beginxsum:=0;end; procedure TForm1.FormClose(Sender: TObject; var Action:…
SetTimer是设置定时器,每隔一段时间执行一个操作,原型如下 UINT_PTR SetTimer( HWND hWnd, // 窗口句柄 UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器 UINT uElapse, // 时间间隔,单位为毫秒 TIMERPROC lpTimerFunc // 回调函数 ); 它是通过分发WM_TIMER消息来触发回调函数的,看下面代码 void CALLBACK TimerProc(HWND hWnd,UI…