CTimer类, timeSetEvent 实现

 
//头文件 Timer.h
#ifndef _TIMER_H_
#define _TIMER_H_


class CTimer
{
private:
    unsigned int  m_nIDTimer;
public:

    CTimer();
    virtual ~CTimer();
    virtual void OnTimer(UINT uID, UINT uMsg, DWORD dw1, DWORD dw2);
    unsigned int SetTimer(UINT uDelay);
    void KillTimer();
    static void CALLBACK TimeProc(UINT uID,UINT uMsg,DWORD dwUser,DWORD dw1, DWORD dw2);
};

#endif //(_TIMER_H_)
//Timer.cpp
#include "stdafx.h"
#include "Timer.h"

#include    
#pragma comment(lib, "WINMM.LIB")


CTimer::CTimer()
{
    m_nIDTimer=NULL;
}

CTimer::~CTimer()
{
    if (m_nIDTimer)
    {
        timeKillEvent(m_nIDTimer);
        m_nIDTimer=NULL;
    }
}

unsigned int CTimer::SetTimer(UINT uDelay)
{
    if (m_nIDTimer) timeKillEvent(m_nIDTimer);
    m_nIDTimer=timeSetEvent(uDelay, 1, TimeProc, (DWORD)this, TIME_PERIODIC | TIME_CALLBACK_FUNCTION);
    return m_nIDTimer;
}

void CTimer::KillTimer()
{
    if (m_nIDTimer)
    {
        timeKillEvent(m_nIDTimer);
        m_nIDTimer=NULL;
    }
}

void CTimer::OnTimer(UINT uID, UINT uMsg, DWORD dw1, DWORD dw2)
{
}

void CALLBACK CTimer::TimeProc(UINT uID,UINT uMsg,DWORD dwUser,DWORD dw1, DWORD dw2)
{
    CTimer *pTimer=(CTimer *)dwUser;
    if (pTimer)
    {
        pTimer->OnTimer(uID, uMsg, dw1, dw2);
    }
}


你可能感兴趣的:(Win32,SDK)