定时器,可以帮助开发者或者用户定时完成某项任务。在使用定时器时,我们可以给系统传入一个时间间隔数据,然后系统就会在每个此时间间隔后触发定时处理程序,实现周期性的自动 *** 作。例如,我们可以在数据采集系统中,为定时器设置定时采集时间间隔为1个小时,那么每隔1个小时系统就会采集一次数据,这样就可以在无人 *** 作的情况下准确的进行 *** 作。
MFC定时器
VS2010编程中,我们可以使用MFC的CWnd类提供的成员函数SetTimer实现定时器功能,也可以使用Windows API函数SetTimer来实现。两者使用方法实际上很类似,但也有不同。
CWnd类的SetTimer成员函数只能在CWnd类或其派生类中调用,而API函数SetTimer则没有这个限制,这是一个很重要的区别。因为本教程主要是讲解MFC编程,所以这里就先重点讲解MFC定时器的用法,关于API函数SetTimer的用法鸡啄米会在MFC定时器讲解的基础上进行延伸。
启动定时器就需要使用CWnd类的成员函数SetTimer。CWnd::SetTimer的原型如下:
UINT_PTR SetTimer(
UINT_PTR nIDEvent,
UINT nElapse,
void (CALLBACK lpfnTimer
)(HWND,
UINT,
UINT_PTR,
DWORD
)
);
参数nIDEvent指定一个非零的定时器ID;参数nElapse指定间隔时间,单位为毫秒;参数lpfnTimer指定一个回调函数的地址,如果该参数为NULL,则WM_TIMER消息被发送到应用程序的消息队列,并被CWnd对象处理。如果此函数成功则返回一个新的定时器的ID,我们可以使用此ID通过KillTimer成员函数来销毁该定时器,如果函数失败则返回0。
通过SetTimer成员函数我们可以看出,处理定时事件可以有两种方式,一种是通过WM_TIMER消息的消息响应函数,一种是通过回调函数。
如果要启动多个定时器就多次调用SetTimer成员函数。另外,在不同的CWnd中可以有ID相同的定时器,并不冲突。
2、为WM_TIMER消息添加消息处理函数,或者定义回调函数。
如果调用CWnd::SetTimer函数时最后一个参数为NULL,则通过WM_TIMER的消息处理函数来处理定时事件。添加WM_TIMER消息的处理函数的方法是,在VS2010工程的Class View类视图中找到要添加定时器的类,点击右键,选择Properties,显示其属性页,然后在属性页工具栏上点击Messages按钮,下面列表就列出了所有消息,找到WM_TIMER消息,添加消息处理函数。
c++语言中可调用time()函数获得一个时间值,该时间值是从1970年1月1日(MFC是1899年12月31日)0时0分0秒,到现在的的秒数,数据类型为long。可以调用ctime()函数进行时间转换输出。 如果进行停车收费计算和显示,可如下 *** 作: 定义两个long类型
你可以用MFC里ontimer计时器,这样写
//开始计时,时间间隔设成1秒(1000毫秒)
void CXXXDlg::OnBnClickedButtonStart()
{
SetTimer(1,1000,NULL);
}
void CXXXDlg::OnTimer(UINT_PTR nIDEvent)
{
//如果计时的变量已经大于等于总的时间了,计时器停止。
if(m_iSecond >= m_iTotalSecond ) {
KillTimer(1);
return;
}
//每隔一秒钟加1
m_iSecond ++;
}
以上就是关于求大神!!如何在MFC中设置一个计时器全部的内容,包括:求大神!!如何在MFC中设置一个计时器、如何使用strftime得到毫秒数、MFC里的倒计时程序,需要一个循环停止条件。望高手指教等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)