VC++ WM_TIMER 定时器使用方法
来源:互联网 发布:java开发的项目 编辑:程序博客网 时间:2024/05/16 08:10
VC++ WM_TIMER 定时器使用方法
在编程时,会经常使用到定时器。使用定时器的方法比较简单,通常告诉Windows一个时间间隔,然后WINDOWS以此时间间隔周期性触发程序。通常有两种方法来实现:发送WM_TIMER消息和调用应用程序定义的回调函数。
1.1 用WM_TIMER来设置定时器
先请看SetTimer这个API函数的原型
UINT_PTR SetTimer(
HWND hWnd,
UINT_PTR nIDEvent,
UINT uElapse,
TIMERPROC lpTimerFunc
);
例如
SetTimer(m_hWnd,1,1000,NULL); //一个1秒触发一次的定时器 第四个参数为NULL,超时时会调用OnTimer函数
在MFC程序中SetTimer被封装在CWnd类中,调用就不用指定窗口句柄了,例如:
UINT SetTimer(1,100,NULL);
函数反回值就是第一个参数值1,表示此定时器的ID号。
第二个参数表示要等待100毫秒时间再重新处理一次。第三个参数在这种方法中一般用NULL。
注意:设置第二个参数时要注意,如果设置的等待时间比处理时间短,程序就会出问题了。
1.2 调用回调函数
此方法首先写一个如下格式的回调函数
void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);
然后再用SetTimer(1,100,TimerProc)函数来建一个定时器,第三个参数就是回调函数地址。
二、多个定时器的实现与应用
我们在安装定时器时都为其指定了ID,使用多个定时器时,该ID就发挥作用了。
不使用MFC时,当接收到WM_TIMER消息,WPARAM wParam中的值便是该定时器的ID
使用MFC时就更简单了,我们为其增加WM_TIME的消息处理函数OnTimer即可,请看如下例子
void CTimerTestDlg::OnTimer(UINT nIDEvent)
{
switch (nIDEvent)
{
case 24: ///处理ID为24的定时器
case 25: ///
}
CDialog::OnTimer(nIDEvent);
}
void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)
{
}
不再使用定时器后,我们应该调用KillTimer来取消定时,KillTimer的原型如下
BOOL KillTimer(
HWND hWnd,
UINT_PTR uIDEvent
);
如:KillTimer(1);
- VC++ WM_TIMER 定时器使用方法
- VC++ WM_TIMER 定时器使用方法
- VC++ WM_TIMER 定时器使用方法
- VC++WM_TIMER 定时器使用方法
- VC++ WM_TIMER 定时器使用方法
- VC中定时器的使用(SETTIMER,KILLTIMER,WM_TIMER消息)
- WM_TIMER消息的使用方法
- 响应WM_TIMER实现定时器功能
- VC++MFC中的定时器使用方法
- VC高精度多媒体定时器使用方法
- VC6.0定时器WM_TIMER事件处理函数
- SetTimer定时器与WM_TIMER窗口消息详解
- SetTimer定时器与WM_TIMER窗口消息详解
- WM_TIMER
- WM_TIMER
- vc高精度多媒体定时器的使用方法
- [转载]vc高精度多媒体定时器的使用方法
- vc高精度多媒体定时器的使用方法
- 三大WEB服务器对比分析(apache ,lighttpd,nginx)
- .NET限制程序一次只能运行一个实例
- Canvas的save和restore
- Java编写好的全国省市名称
- 负载均衡(Load Balance)
- VC++ WM_TIMER 定时器使用方法
- android控件18 ImageSwitcher
- Java实验7 流
- GetPrivateProfileStruct大小限制
- M-Tree for Similarity Search
- 【C/C++】指针数组
- Android ApiDemos详解之App/Activity/Dialog(4)
- VS实用快捷键及技巧整理
- wxpython第一课基本开发步骤