windows简单呈现


//************************************************************************************
//本程序使用了两种实现定时的方法,都是基于API的,而不是MFC
//
//  1. 是使用线程定时休眠的方法,启动线程ThreadProc,在线程中输出,然后Sleep 1000ms
//   
//  2. 使用定时器方法,设置一个1000ms的定时器(SetTimer),然后捕捉该消息,然后调用回调函数
//     TimerProc,在该函数中输出DEF,注意,SetTimer可以直接写回调函数地址,不必捕捉消息。
//  3. 本例子已经很详细了。
//  4. 祝你好运。
//
//************************************************************************************



#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);   
		  } 
		} 
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值