我创建了一个计时器每2秒激活一次,但是在OnTimer()函数中用了Sleep(5000)函数;那么请问OnTimer()是2秒还是7秒执行一次,谢谢! 我创建了一个计时器每2秒激活一次,但是在OnTimer()函数中用了Sleep(5000)函数;那么请问OnTimer()是2秒还是7秒执行一次,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Sleep在执行完成之前不会接收到WM_TIMER消息 因为消息然会发送消息到消息队列,所以sleep5秒后就马上处理WM_TIMER,所以是5秒,但消息队列的消息会越积越多的 是5秒,但是消息队列的Timer消息不会越积越多,因为Timer消息不积累。 WM_TIMER消息是不会越积越多的 5秒一到就执行,消息队列中已经有了WM_TIMER消息 大约5秒, WM_TIMER和 WM_PAINT一样,系统会自动合并消息的 这个问题,调试一下好了,每次WM_TIMER就把当前时间写到一个文件里看看 5 秒//以下是我的一个程序稍做修改而成的例子//m_edit edit控件变量void CDlgDlg::OnButton3() { SetTimer(1,2000,NULL);}void CDlgDlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default Sleep(5000); CString str; CString strYear, strMonth, strDay; CString strHour, strMinute, strSecond; CTime myTime; int myYear, myMonth, myDay; int myHour, myMinute, mySecond; myTime = myTime.GetCurrentTime(); myYear = myTime.GetYear(); myMonth = myTime.GetMonth(); myDay = myTime.GetDay(); myHour = myTime.GetHour(); myMinute = myTime.GetMinute(); mySecond = myTime.GetSecond(); strYear.Format(" %d", myYear); if (myMonth < 10) { strMonth.Format("-0%d", myMonth); } else { strMonth.Format("-%d", myMonth); } if (myDay < 10) { strDay.Format("-0%d", myDay); } else { strDay.Format("-%d", myDay); } strHour.Format(" %d", myHour); if (myMinute < 10) { strMinute.Format(":0%d", myMinute); } else { strMinute.Format(":%d", myMinute); } if (mySecond < 10) { strSecond.Format(":0%d", mySecond); } else { strSecond.Format(":%d", mySecond); } str = "//Added by " ; str = str + strYear + strMonth + strDay + strHour + strMinute + strSecond; UpdateData(FALSE); m_edit.SetWindowText(str); m_edit.SetSel(0, str.GetLength()); m_edit.Copy(); } 把网上下的icon文件放到vc工程的资源文件res中,怎么没法导入资源? 顶点法线方向计算 我有一个DIB句柄hbmpNew,请问,如何获得DIB图像的数据流地址? 学VC 如何在程序中切换按钮上的位图 大家来讨论一下关于VC中对STL的支持的问题 从和做起 IE控件问题 串行通信问题:怎样串行传输结束? 如何在CHtmlView中控制拖放? 求助,XML中cloneNode方法的问题 如何将C语言写的程序用VC++图形显示出来
//以下是我的一个程序稍做修改而成的例子
//m_edit edit控件变量
void CDlgDlg::OnButton3()
{
SetTimer(1,2000,NULL);
}void CDlgDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
Sleep(5000);
CString str;
CString strYear, strMonth, strDay;
CString strHour, strMinute, strSecond;
CTime myTime;
int myYear, myMonth, myDay;
int myHour, myMinute, mySecond;
myTime = myTime.GetCurrentTime();
myYear = myTime.GetYear();
myMonth = myTime.GetMonth();
myDay = myTime.GetDay();
myHour = myTime.GetHour();
myMinute = myTime.GetMinute();
mySecond = myTime.GetSecond();
strYear.Format(" %d", myYear);
if (myMonth < 10)
{
strMonth.Format("-0%d", myMonth);
}
else
{
strMonth.Format("-%d", myMonth);
}
if (myDay < 10)
{
strDay.Format("-0%d", myDay);
}
else
{
strDay.Format("-%d", myDay);
}
strHour.Format(" %d", myHour);
if (myMinute < 10)
{
strMinute.Format(":0%d", myMinute);
}
else
{
strMinute.Format(":%d", myMinute);
}
if (mySecond < 10)
{
strSecond.Format(":0%d", mySecond);
}
else
{
strSecond.Format(":%d", mySecond);
}
str = "//Added by " ;
str = str + strYear + strMonth + strDay + strHour + strMinute + strSecond;
UpdateData(FALSE);
m_edit.SetWindowText(str);
m_edit.SetSel(0, str.GetLength());
m_edit.Copy();
}