不多说,直接上代码
MyTimer.h
#pragma once
#include <Windows.h>
#include <iostream>
#include <map>
#include <string>
using namespace std;
class CMytimer
{
public:
CMytimer(void) {};
~CMytimer(void) {};
typedef std::map<unsigned int, CMytimer*> TimerMap;
void startTimer();
void killTimer();
static void CALLBACK TimerProc(HWND hWnd, UINT nMsg,UINT nTimerid,DWORD dwTime);
unsigned int m_nTimerID;
string m_str;
static TimerMap m_sTimerMap;
};
MyTimer.cpp
#include "Mytimer.h"
CMytimer::TimerMap CMytimer::m_sTimerMap;
void CMytimer::startTimer()
{
m_nTimerID = ::SetTimer(NULL,NULL,3000,TimerProc);
m_str = "再静态成员函数中访问非静态成员";
m_sTimerMap[m_nTimerID] = this;
}
void CMytimer::killTimer()
{
::KillTimer(NULL, m_nTimerID);
}
void CALLBACK CMytimer::TimerProc( HWND hWnd, UINT nMsg,UINT nTimerid,DWORD dwTime )
{
cout << m_sTimerMap[nTimerid]->m_str;
}