作者在 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);
}
但是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);
}