MFC中创建简单定时器

来源:互联网 发布:pk10挂机软件手机软件 编辑:程序博客网 时间:2024/06/14 20:30

MFC中使用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程序中SetTimer被封装在CWnd类中,调用就不用指定窗口句柄了

于是SetTimer函数的原型变为:
UINT SetTimer(UINT nIDEvent,UINT nElapse,void(CALLBACK EXPORT *lpfnTimer)(HWND,UINT ,YINT ,DWORD))

1.函数中的nIDEvent指的是计时器的标识,也就是名字

2.nElapse指的是时间间隔,也就是每隔多少时间触发一次事件

3.第三个参数是一个回调函数,在这里放入你想要做的事情的代码,你可以将它设定为NULL,也就是系统默认的回调函数,系统默认的是OnTimer函数。

需要注意的是,定时器的OnTimer函数必须是由窗口对话框属性--消息--WM_TIMER--OnTimer自动生成!!!!!!如下图:



会自动生成如下函数:

void CMFCAppDlg::OnTimer(UINT_PTR nIDEvent){// TODO: Add your message handler code here and/or call defaultCDialogEx::OnTimer(nIDEvent);}
在这个函数中你就可以写入你想要循环执行的函数语句!!!

当不需要计时器的时候调用KillTimer(nIDEvent);!!!

一般情况下可以设置一个按键为启动定时器(如SetTimer(1,1000,NULL);),另一个按键为关闭定时器(例如:KillTimer(1);)。

原创粉丝点击