定时器是单片机中常见的一种系统资源,相信学过单片机的同学已经非常了解了,这里也就不再介绍,下面只是说明一下在VC中定时器的编程方法:
1)设置定时器:
UINT_PTR SetTimer(
HWND hWnd,// 窗口句柄
UINT_PTR nIDEvent,// 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器
UINT uElapse,// 时间间隔,单位为毫秒
TIMERPROC lpTimerFunc // 回调函数
);
在MFC程序中SetTimer被封装在CWnd类中,调用就不用指定窗口句柄了;
比如在对话框OnInitDialog()函数中设置 SetTimer(1, 500, NULL);
第三个参数是一个回调函数,在这个函数里,放入你想要做的事情的代码,你可以将它设定为NULL,也就是使用系统默认的回调函数onTimer函数,需要用类向导添加消息响应WM_TIMER。
BEGIN_MESSAGE_MAP(CMSCOMMDlg, CDialog)
//{{AFX_MSG_MAP(CMSCOMMDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
2)关闭定时器:
BOOL KillTimer(
HWND hWnd,
UINT_PTR uIDEvent
);
3)定时“中断函数”(回调函数):
void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);
注意:回调函数的写法一定要参照MSDN的提示规则编写,否则是无效的
由MFC响应的函数为 函数为 void CXXXDlg::OnTimer(UINT nIDEvent) {;}
定时器正如在单片机中那样用途广泛,我们熟知的托盘图标单锁就是用定时器实现的......