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

📄 htimer.h

📁 积下的一点C++编程序库源码
💻 H
字号:

#if !defined(AFX_HTIMER_H__1A30C49A_0835_4DBA_98FE_B5A07CFB8AF1__INCLUDED_)
#define AFX_HTIMER_H__1A30C49A_0835_4DBA_98FE_B5A07CFB8AF1__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//////////////////////////////////////////////////////////////////////////////


//文件名		: HTimer.h

//功能			:用线程和事件对象模拟一个定时器,应用于Windows 和 Linux两种系统

//创建/修改日期	: 2003.11.27

//作者			: 韩国静
//

#include "HEvent.h"
typedef void (*PTIMERPROC)(void *);
class CHTimer  
{
	void		*m_TimeParam;
	UNI_BOOL	m_bStop;
	UNI_DWORD	m_dwWaitCount;
	CHEvent	m_Wait;
	UNI_ThreadHandle m_hThread;
	PTIMERPROC m_pOnTimer;
//	void (*m_pOnTimer)(UNI_DWORD);
private:

	static UNI_THREADPROC TimerThread(void *pParam)
	{
		void	*dwParam;
		UNI_DWORD dwTimeCount;
		CHTimer *pThis=(CHTimer*)pParam;
		if(pParam)
		{
			dwParam=pThis->m_TimeParam;
			dwTimeCount=pThis->m_dwWaitCount;
			while(pThis->m_bStop==UNI_FALSE)
			{
				pThis->m_Wait.WaitEvent(dwTimeCount);
				if(pThis->m_bStop)
					break;
				pThis->m_pOnTimer(dwParam);
			}
		}
		UNI_ExitThread(0);
	};

public:

	//
	void KillTimer()
	{
		if(m_bStop==UNI_FALSE)
		{
			m_bStop=UNI_TRUE;
			m_Wait.SetEvent();
			UNI_WaitCloseThread(this->m_hThread);
			this->m_Wait.CloseEvent();
		}
	};

	//
	UNI_BOOL CreateTimer(UNI_DWORD dwTimeCount,PTIMERPROC pOnTimer,void * dwParam)
	{
		UNI_ThreadID ThreadId;
		if(dwTimeCount==0||dwTimeCount==(UNI_DWORD)-1||pOnTimer==UNI_NULL)
			return UNI_FALSE;
		if(this->m_Wait.CreateEvent())
		{
			this->m_dwWaitCount=dwTimeCount;
			this->m_bStop=UNI_FALSE;
			this->m_pOnTimer=pOnTimer;
			this->m_TimeParam =dwParam;
			if(UNI_CreateThread(TimerThread,this,&this->m_hThread,&ThreadId)==UNI_TRUE)
			{
				return UNI_TRUE;
			}
			m_bStop=UNI_TRUE;
			m_Wait.SetEvent();
			m_Wait.CloseEvent();
		}
		return UNI_FALSE;
	};

	////////////////////		构造和析构		/////////////////////////////////
	CHTimer()
	{
		m_bStop=UNI_TRUE;
		m_TimeParam=0;
	};
	virtual ~CHTimer(){};
};

#endif // !defined(AFX_HTIMER_H__1A30C49A_0835_4DBA_98FE_B5A07CFB8AF1__INCLUDED_)

⌨️ 快捷键说明

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