在控制台工程下,如何实现定时器?

papaofdoudou
人工智能领域新星创作者
博客专家认证
2009-12-24 01:28:23
控制台工程下,每隔5秒发生执行某个动作一次,如何实现?
...全文
135 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
crushor 2009-12-25
  • 打赏
  • 举报
回复
印象中我回复过这种问题,但我找不到之前的帖子了,好在不麻烦。


#include "stdafx.h"
#include <iostream>
#include <windows.h>
using namespace std;

VOID CALLBACK onTimer(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime )
{
static int i = 0;
cout<<++i<<endl;
}

int main(int argc, char* argv[])
{
SetTimer(NULL,1,1000,onTimer);

MSG msg;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return 0;
}



macrojj 2009-12-24
  • 打赏
  • 举报
回复
呵呵 要的是定时器 不是 暂停。

dskit 2009-12-24
  • 打赏
  • 举报
回复
windows 下用API SetTimer, 具体用法查下csdn
shuilongyin_00 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 do_fork 的回复:]
ls这个暴力循环好恐怖
[/Quote]
请推荐好的,谢谢! 我也是菜啊……
shuilongyin_00 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 mstlq 的回复:]
http://msdn.microsoft.com/en-us/library/ms644906(VS.85).aspx
[/Quote]引用下你的哈,别介意……
哈哈!MSDN 这也………………
do_fork 2009-12-24
  • 打赏
  • 举报
回复
ls这个暴力循环好恐怖
shuilongyin_00 2009-12-24
  • 打赏
  • 举报
回复
delay函数要自己写,编译器里没有。

#include <time.h>
void delay(int sec)
{
time_t start_time, cur_time; // 变量声明
time(&start_time);
do { time(&cur_time);
} while((cur_time - start_time) < sec );
}


   然后就可以直接调用了

   如:

#include<iostream.h>
#include <time.h>
using namespace std;
void delay(int sec)
{
time_t start_time, cur_time; // 变量声明
time(&start_time);

do {
time(&cur_time);
} while((cur_time - start_time) < sec );
}

void main()
{
cout<<"a"<<endl;
delay(5); // 滞后5秒
cout<<"b"<<endl;
}


   短于一秒的delay可以这样写:

 clock_t start_time, cur_time;
start_time = clock();
while((clock() - start_time) < 3.0 * CLOCKS_PER_SEC)
{
}

   但有的编译器不支持clock
mstlq 2009-12-24
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/en-us/library/ms644906(VS.85).aspx
shuilongyin_00 2009-12-24
  • 打赏
  • 举报
回复
用delay

Google 下,有很多哈!代码都全有!
taodm 2009-12-24
  • 打赏
  • 举报
回复
xp的控制台直接使用windows提供的定时器呀。
nintendo_dskay 2009-12-24
  • 打赏
  • 举报
回复
创建一个线程,然后GetTickCount记录当前时间,Sleep(),然后再GetTickCount,两次时间相减,如果大于某数值则执行某操作。上述步骤循环判断。
papaofdoudou 2009-12-24
  • 打赏
  • 举报
回复
有源代码更好啊
papaofdoudou 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 taodm 的回复:]
什么操作系统啊?
[/Quote]
XP呀
十八道胡同 2009-12-24
  • 打赏
  • 举报
回复
可以用一个time_t来记录最开始的时间,然后
循环等待,如果时间+5s了,执行操作
taodm 2009-12-24
  • 打赏
  • 举报
回复
什么操作系统啊?

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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