console 程序定时器 请问控制台程序如何用定时器功能? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blog.csdn.net/youyulangzi/archive/2010/08/26/5841199.aspx 利用多线程、回调函数http://blog.csdn.net/firebird321/archive/2008/09/16/2938611.aspx #include "stdafx.h"#include <windows.h>DWORD WINAPI ThreadProc( LPVOID lpParameter )//方法1{ static DWORD tick=0; DWORD tmp = GetTickCount(); while(1) { tick = GetTickCount()-tmp;//获得系统从启动开始到现在的ms数 tmp = GetTickCount(); printf("THREAD_PROC: abc %d, tickcount: %d\n",tick,tmp);//打印abc和上次打印到这次打印之间的毫秒间隔。 Sleep(1000);//每隔1000ms打印abc }}VOID TimerProc()//方法2{ static DWORD tick=0; static DWORD tmp = GetTickCount(); tick = GetTickCount()-tmp; tmp = GetTickCount(); printf(" TimerProc________________def %d\n",tick);}int main(){ DWORD dwthread; ::CreateThread(NULL,0,ThreadProc,(LPVOID)0,1024,&dwthread);//生成一个线程,在该线程里每1000ms输出一个"abc",然后SLEEP SetTimer(0,0,1000,0);//设置一个定时器,定时器的回调函数为0,//仅产生定时器消息,在main函数里捕捉该消息 MSG msg; bool flag; while(1)//该循环捕捉定时器消息,并且防止main函数退出 { PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE); while( (flag = GetMessage( &msg, NULL, 0, 0 )) != 0) { if (flag == -1) { // handle the error and possibly exit } else if(msg.message==WM_TIMER) { TimerProc();//如果是定时器消息,调用timerproc } else { TranslateMessage(&msg); DispatchMessage(&msg); } } }} 解决session cookie等跨进程的问题! ATL Web Services传递vector<int>参数的问题?? SetClassLong 不能在对话框里用吗 关闭对话框后句柄还存在? 命名管道使用CancelIo()的疑问??? 保存多种文件格式 怎么定位光标位置? 请问大虾,如何在一窗口的客户区绘制渐变色。 一个关于CListCtrl的问题 急:如何用vs2005生成一个VBScript可以调用的ActiveX 求助关于CWinApp*AfxGetApp()的问题 多线程定时提醒的问题
http://blog.csdn.net/firebird321/archive/2008/09/16/2938611.aspx
#include <windows.h>DWORD WINAPI ThreadProc( LPVOID lpParameter )//方法1
{
static DWORD tick=0;
DWORD tmp = GetTickCount();
while(1)
{
tick = GetTickCount()-tmp;//获得系统从启动开始到现在的ms数
tmp = GetTickCount();
printf("THREAD_PROC: abc %d, tickcount: %d\n",tick,tmp);//打印abc和上次打印到这次打印之间的毫秒间隔。
Sleep(1000);//每隔1000ms打印abc
}
}
VOID TimerProc()//方法2
{
static DWORD tick=0;
static DWORD tmp = GetTickCount();
tick = GetTickCount()-tmp;
tmp = GetTickCount();
printf(" TimerProc________________def %d\n",tick);}
int main()
{
DWORD dwthread;
::CreateThread(NULL,0,ThreadProc,(LPVOID)0,1024,&dwthread);
//生成一个线程,在该线程里每1000ms输出一个"abc",然后SLEEP
SetTimer(0,0,1000,0);//设置一个定时器,定时器的回调函数为0,
//仅产生定时器消息,在main函数里捕捉该消息
MSG msg;
bool flag;
while(1)//该循环捕捉定时器消息,并且防止main函数退出
{
PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE);
while( (flag = GetMessage( &msg, NULL, 0, 0 )) != 0)
{
if (flag == -1)
{
// handle the error and possibly exit
}
else if(msg.message==WM_TIMER)
{
TimerProc();//如果是定时器消息,调用timerproc }
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}}