定时器的时间间隔

作者在 2008-10-07 22:48:04 发布以下内容
使用 SetTimer函数设置定时器的时间间隔后,定时器将每隔指定的时间发出一个定时间隔消息供OnTimer函数响应
但是SetTimer函数设置的时间间隔还受到Sleep函数影响
比如使用 SetTimer(111,50,NULL) 设置了时间间隔50ms的定时器
如果在 消息响应函数OnTimer中设置了    Sleep(5000); 则,在程序执行Sleep时,定时器计数值并不会增加
这就会使实际表现的响应间隔看起来是 5050 ms ,而非50ms

另外,一个进程中只能使用一个OnTimer函数
如果有多个定时器
在需要使用nIDEvent进行判断是哪个定时器
比如:
void CGetQQRobtDlg::OnTimer(UINT nIDEvent)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    if(nIDEvent == 111)
    {
        /*char ch[100] = "测试";*/

        ::SendMessageA(SendWnd, 177, 0, (LPARAM)"-1"); // 清空编辑控件
        ::SendMessageA(SendWnd, 194, 1, (LPARAM)m_strChat.GetBuffer(0));// 用指定字符串替换编辑控件中的
        Sleep(5000);
        ::SendMessage(BtWnd,WM_LBUTTONDOWN,0,0);
        ::SendMessage(BtWnd,WM_LBUTTONUP,0,0);
    }
    CDialog::OnTimer(nIDEvent);
}
经验 | 阅读 4830 次
文章评论,共0条
游客请输入验证码
浏览1936618次