カプセル化されたタイマクラス

854 ワード

class CTimerQuene{
public:
	typedef void(* FUNCTIONPOINTER)();//  FUNCTIONPOINTER       
	HANDLE hTimeQueue;//     
	HANDLE hTimer;//   
public:

	CTimerQuene(){
		hTimeQueue=NULL;
		hTimer=NULL;
	}

	virtual ~CTimerQuene(){
		KillTimerQuene();
	}

	void KillTimerQuene(){
		//              
			DeleteTimerQueue(hTimeQueue);
	}

   BOOL  CreateTimer(FUNCTIONPOINTER func,DWORD period=1){
				//         
				hTimeQueue=CreateTimerQueue();
				//              ,      true,    false
		return CreateTimerQueueTimer(&hTimer,hTimeQueue,(WAITORTIMERCALLBACK)TimeRoutine,func,1,period,0);
	
   }

	static void CALLBACK TimeRoutine(PVOID lpParam,BOOLEAN TimeOrWaitFired){
		//             
			FUNCTIONPOINTER func=(FUNCTIONPOINTER)(lpParam);
			func();
	}

};

クラスにカプセル化すると少し違いますが、コールバック関数はstaticタイプに設定する必要があります.そうしないと、エラーが発生します.