VC定时器的问题

coffeeroy2 2015-02-03 03:08:10
z在VC里想用定时器每隔1s取一个值,当前后两次的取值的差大于100时,执行相应的操作。请问该怎么做,能贴上代码么?求前辈指教,新手感激不尽~
...全文
84 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
i2016 2015-02-03
  • 打赏
  • 举报
回复
引用 2 楼 u014274707 的回复:
[quote=引用 1 楼 from2015 的回复:]

#include <stdio.h>
#include <windows.h>

int main(int argc, char* argv[])
{
	int sleepCount = 0;
	int pre = 0;
	int num = 0;
	printf("Hello World!\n");
    while(1)
    {
		scanf("%d", &num); // 取值
		if (pre - num > 100 || num - pre > 100)
		{
			printf("do something.\n");
		} 
		else
		{
			printf("congtinue.\n");
		}
		
		Sleep(1000); // 等待1秒
    } // while(1);
	
	
	return 0;
}
这样行不行?
你是新手吧。首先你写的那个是个死循环,其次线程休眠和定时器是不同的[/quote] 嗯。向各位学习。
coffeeRoy 2015-02-03
  • 打赏
  • 举报
回复
下载这个看看http://www.codefans.net/soft/23871.shtml
赵4老师 2015-02-03
  • 打赏
  • 举报
回复
仅供参考
#pragma comment(lib,"user32")
#include <stdio.h>
#include <time.h>
#include <sys/timeb.h>
#include <windows.h>
char datestr[16];
char timestr[16];
char mss[4];
void log(char *s) {
    struct tm *now;
    struct timeb tb;

    ftime(&tb);
    now=localtime(&tb.time);
    sprintf(datestr,"%04d-%02d-%02d",now->tm_year+1900,now->tm_mon+1,now->tm_mday);
    sprintf(timestr,"%02d:%02d:%02d",now->tm_hour     ,now->tm_min  ,now->tm_sec );
    sprintf(mss,"%03d",tb.millitm);
    printf("%s %s.%s %s",datestr,timestr,mss,s);
}
VOID CALLBACK myTimerProc1(
  HWND hwnd, // handle of window for timer messages
  UINT uMsg, // WM_TIMER message
  UINT idEvent, // timer identifier
  DWORD dwTime // current system time
) {
 log("In myTimerProc1\n");
}
VOID CALLBACK myTimerProc2(
  HWND hwnd, // handle of window for timer messages
  UINT uMsg, // WM_TIMER message
  UINT idEvent, // timer identifier
  DWORD dwTime // current system time
) {
 log("In myTimerProc2\n");
}
int main() {
    int i;
    MSG msg;

    SetTimer(NULL,0,1000,myTimerProc1);
    SetTimer(NULL,0,2000,myTimerProc2);
    for (i=0;i<20;i++) {
        Sleep(500);
        log("In main\n");
        if (GetMessage(&msg,NULL,0,0)) {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }

    }
    return 0;
}
//2012-07-26 17:29:06.375 In main
//2012-07-26 17:29:06.875 In myTimerProc1
//2012-07-26 17:29:07.375 In main
//2012-07-26 17:29:07.875 In myTimerProc2
//2012-07-26 17:29:08.375 In main
//2012-07-26 17:29:08.375 In myTimerProc1
//2012-07-26 17:29:08.875 In main
//2012-07-26 17:29:08.875 In myTimerProc1
//2012-07-26 17:29:09.375 In main
//2012-07-26 17:29:09.890 In myTimerProc2
//2012-07-26 17:29:10.390 In main
//2012-07-26 17:29:10.390 In myTimerProc1
//2012-07-26 17:29:10.890 In main
//2012-07-26 17:29:10.890 In myTimerProc1
//2012-07-26 17:29:11.390 In main
//2012-07-26 17:29:11.890 In myTimerProc2
//2012-07-26 17:29:12.390 In main
//2012-07-26 17:29:12.390 In myTimerProc1
//2012-07-26 17:29:12.890 In main
//2012-07-26 17:29:12.890 In myTimerProc1
//2012-07-26 17:29:13.390 In main
//2012-07-26 17:29:13.890 In myTimerProc2
//2012-07-26 17:29:14.390 In main
//2012-07-26 17:29:14.390 In myTimerProc1
//2012-07-26 17:29:14.890 In main
//2012-07-26 17:29:14.890 In myTimerProc1
//2012-07-26 17:29:15.390 In main
//2012-07-26 17:29:15.890 In myTimerProc2
//2012-07-26 17:29:16.390 In main
//2012-07-26 17:29:16.390 In myTimerProc1
//2012-07-26 17:29:16.890 In main
//2012-07-26 17:29:16.890 In myTimerProc1
//2012-07-26 17:29:17.390 In main
//2012-07-26 17:29:17.890 In myTimerProc2
//2012-07-26 17:29:18.390 In main
//2012-07-26 17:29:18.390 In myTimerProc1
//2012-07-26 17:29:18.890 In main
//2012-07-26 17:29:18.890 In myTimerProc1
//2012-07-26 17:29:19.390 In main
//2012-07-26 17:29:19.890 In myTimerProc2
coffeeroy2 2015-02-03
  • 打赏
  • 举报
回复
引用 1 楼 from2015 的回复:

#include <stdio.h>
#include <windows.h>

int main(int argc, char* argv[])
{
	int sleepCount = 0;
	int pre = 0;
	int num = 0;
	printf("Hello World!\n");
    while(1)
    {
		scanf("%d", &num); // 取值
		if (pre - num > 100 || num - pre > 100)
		{
			printf("do something.\n");
		} 
		else
		{
			printf("congtinue.\n");
		}
		
		Sleep(1000); // 等待1秒
    } // while(1);
	
	
	return 0;
}
这样行不行?
你是新手吧。首先你写的那个是个死循环,其次线程休眠和定时器是不同的
i2016 2015-02-03
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <windows.h>

int main(int argc, char* argv[])
{
	int sleepCount = 0;
	int pre = 0;
	int num = 0;
	printf("Hello World!\n");
    while(1)
    {
		scanf("%d", &num); // 取值
		if (pre - num > 100 || num - pre > 100)
		{
			printf("do something.\n");
		} 
		else
		{
			printf("congtinue.\n");
		}
		
		Sleep(1000); // 等待1秒
    } // while(1);
	
	
	return 0;
}
这样行不行?

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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