⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.h

📁 实时监控
💻 H
字号:
#ifndef _TIMER_H
#define	_TIMER_H

#include "mmsystem.h"

class timer
{
	UINT id;
	DWORD u;
	LPTIMECALLBACK f;

public:
	timer(): id(0), u(0), f(NULL) {}
	~timer()
	{
		stop();
	}

	//void CALLBACK fn(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2);
	bool start(UINT delay, LPTIMECALLBACK fn, DWORD user)
	{
		if( !id )
		{
			id = timeSetEvent(delay, 0, fn, user, TIME_PERIODIC | TIME_CALLBACK_FUNCTION);
			f = fn;
			u = user;
		}
		return id != 0;
	}

	bool startag(UINT delay, LPTIMECALLBACK fn, DWORD user)
	{
		if( !id )
		{
			id = timeSetEvent(delay, 0, fn, user, TIME_ONESHOT | TIME_CALLBACK_FUNCTION);
			f = fn;
			u = user;
		}
		return id != 0;
	}

	void stop()
	{
		if( id )
		{
            if(timeKillEvent(id) != TIMERR_NOERROR )
					AfxMessageBox("timer kill failure !!");
			id = 0;

			/*
			 *	下面这几句会在change()时造成定时器停止
			 */
//			u = 0;
//			f = NULL;
		}
	}
	void change(UINT delay)
	{
		if( id )
		{
			stop();
			start(delay, f, u);
		}
	}
	bool is_started() const
	{
		return id != 0;
	}
};

#endif	//_TIMER_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -