MFC开发,给对话框添加定时器
定时器简介
定时器的主要功能是设置以毫秒为单位的定时周期,然后进行连续定时或单次定时。
定时器是用于设置有规律的去触发某种动作所用的,这种场景也是软件中经常可以用到的,比如用户设置规定时间推送提示的功能,又比如程序定期向服务器请求某种数据时,等等功能都需要使用定时器来完成这样的操作。
QT和MFC中都用添加定时器的方法,我们这里先来介绍在MFC中添加定时器的方法
相关函数
使用定时器需要用到SetTimer、OnTimer和KillTimer这三个函数,其中OnTimer函数体需要自己实现和通过消息进行添加,其它两个函数是系统调用
SetTimer() 设置定时器
该函数的功能是创建一个定时器,同时开启这个创建定时器
函数声明如下
UINT_PTR CWnd::SetTimer(UINT_PTR nIDEvent, UINT nElapse, void (CALLBACK* lpfnTimer)(HWND, UINT, UINT_PTR, DWORD));
// nIDEvent 指定定时器的ID,用于处理和销毁定时器所用
// nElapse 定时器每次触发的时间间隔,以毫秒为单位
// lpfnTimer 指定定时器超时时的回调函数,可以为NULL表示不理会定时器超时
OnTimer() 处理定时器
当定时器所设置的定时毫秒数结束时,OnTimer()函数就会收到该定时器的ID,就可以进行定时操作的处理
OnTimer()函数是通过MFC进行添加的,下面介绍一下如何添加OnTimer函数
点击要添加定时器的对话框→点击属性→选择消息→添加WM_TIMER消息
添加完成
其中参数nIDEvent就是创建定时器时所指定的定时器ID
KillTimer() 销毁定时器
该函数的功能是销毁并停止指定定时器的工作
函数声明如下
BOOL CWnd::KillTimer(UINT_PTR nIDEvent);
// nIDEvent 指定要销毁的定时器的ID
代码实现
下面我将提供一段创建并使用定时器的代码,提供给大佬门参考
示例代码
BOOL CMainDlg::OnInitDialog()
{CDialog::OnInitDialog();// 在此添加额外的初始化SetTimer(0, 50, NULL);return TRUE; // return TRUE unless you set the focus to a control// 异常: OCX 属性页应返回 FALSE
}void CMainDlg::OnTimer(UINT_PTR nIDEvent)
{// TODO: 在此添加消息处理程序代码和/或调用默认值if (nIDEvent == 0) {TRACE("定时器触发\r\n");}CDialog::OnTimer(nIDEvent);
}void CMainDlg::OnClose()
{KillTimer(0);CDialog::OnClose();
}
运行结果
到这里,MFC开发给对话框添加定时器就介绍完了
感谢观看学习,大佬们多多指点,愿明天的自己会感谢当下的努力!!!!