一、前言
定时器是我们在工程中使用较多的一个工具,这里提供一个入门的普通定时器,一共需要三个函数:
- SetTimer()
- KillTimer()
- OnTimer()
下面少讲理论知识,直接在应用中学习,做到快速上手。
二、讲解
1. 函数的功能
- SetTimer() 函数
设置一个定时器。
- OnTimer() 函数
系统默认的回调函数。
- KillTimer() 函数
关闭定时器。
2. 函数使用
- SetTimer()函数
① 原型:
//UINT_PTR SetTimer( hWnd , nIDEvent, uElapse, lpTimerFunc);
UINT_PTR SetTimer(
HWND hWnd, // 窗口句柄
UINT_PTR nIDEvent, // 定时器ID
UINT uElapse, // 时间间隔
TIMERPROC lpTimerFunc // 回调函数
);
② 参数:
- hWnd 窗口句柄。
- nIDEvent 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器,也就是这个定时器的名字。
-
uElapse 时间间隔,单位为毫秒。
-
lpTimerFunc 回调函数,如果设置为 NULL ,则系统自动调用onTimer()函数。
③ 说明
在MFC程序中SetTimer被封装在CWnd类中,调用就不用指定窗口句柄了。
④ 实例
SetTimer(1,1000,NULL);
- 1: 计时器的名称;
- 1000: 时间间隔,单位是毫秒;
- NULL: 使用onTime()函数。
- OnTimer() 函数
① 原型:
OnTimer(nIDEvent)
② 参数:
- nIDEvent 定时器ID,也就是这个定时器的名字。
③ 添加步骤:
1)在类视图中选中你想要操作的类,截图如下:
2)在 ‘ 属性 ’ 窗口中点击 ‘ 消息栏 ’,找到 ‘ WM_TIMER ’ 后,点击后面‘ 箭头指向下的按钮 ’,选择ADD OnTimer,则系统会自动在对应类的“ .h ”文件中添加OnTimer()的声明,在对应类的“ .cpp ”中添加OnTimer()函数的实现,你只需要在实现中添加你想要的内容就可以了。截图如下:
④ 实例
void CMainControl::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
switch(nIDEvent)
{
case 1:
{
CString temp;
temp.Format(_T("%.6lf"),FalconData.FalconPos[0]); //操纵杆X
GetDlgItem(IDC_XFALCON)->SetWindowText(temp);
temp.Format(_T("%.6lf"),testBP2);//FalconData.FalconPos[1]); //操纵杆Y
GetDlgItem(IDC_YFALCON)->SetWindowText(temp);
temp.Format(_T("%.6lf"),testBP1);//;FalconData.FalconPos[2]); //操纵杆Z
GetDlgItem(IDC_ZFALCON)->SetWindowText(temp);
break;
}
}
CFormView::OnTimer(nIDEvent);
}
注:多个定时器的时候可以通过switch来实现选择。
- KillTimer() 函数
① 原型:
KillTimer(nIDEvent)
② 参数:
- nIDEvent 定时器ID,就是这个定时器的名字。
③ 说明:
当不需要计时器的时候调用此函数。
④ 实例:
KillTimer(1);