在VC中,时间延时是怎样实现的

zhonggengbo 2003-02-25 03:25:45
在VC中,时间延时是怎样实现的?下例中m_nTimer是什么类型?怎样解释?
void CMainFrame::OnStartTimer()
{
m_nTimer = SetTimer(1, 2000, 0);
}

void CMainFrame::OnStopTimer()
{
KillTimer(m_nTimer);
}

void CMainFrame::OnTimer(UINT nIDEvent)
{
MessageBeep(0xFFFFFFFF); // Beep

// Call base class handler.
CMDIFrameWnd::OnTimer(nIDEvent);
}
...全文
28 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhonggengbo 2003-03-10
  • 打赏
  • 举报
回复
谢谢各位的解答!!
liuhui2003 2003-03-08
  • 打赏
  • 举报
回复
我知道有两种方法:
1.在每次循环之中使用sleep(10)(这里的10由你定),意思是先睡10个毫秒,之后再醒来;
2.是以空循环做延迟多少由你定;

m_nTimer是个变量用来接收数据
binbin 2003-03-08
  • 打赏
  • 举报
回复
用Sleep会使程序死掉一会不响应消息的.
下面的方法好一些,不过计时不会太准确.
for(int i=0;i<10;i++)
{
MSG msg;
Sleep(10);//分成10次Sleep
GetMessage(&msg);
DispatchMessage(&msg);//处理消息
}
witist 2003-03-08
  • 打赏
  • 举报
回复
就用Sleep(1000)挺好的
要不就用 OnTimer(UINT, nIDEvent) 接收
用 SetTimer(接收信号,时间数,NULL) 发送
glinlin 2003-03-08
  • 打赏
  • 举报
回复
请问飘人:您说2801为10ms,如果计算机CPU速度不同,10ms空循环次数要变的?
demetry 2003-02-26
  • 打赏
  • 举报
回复
::Sleep(1000)
nuaawenlin 2003-02-25
  • 打赏
  • 举报
回复
也可以用空循环,2801为10ms
zhuwenzheng 2003-02-25
  • 打赏
  • 举报
回复
DWORD dwStart = GetTickCount();

// Stop if this has taken too long
if( GetTickCount() - dwStart >= TIMELIMIT )
Cancel();

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧