• 大小: 18.15MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-03
  • 语言: C/C++
  • 标签: win32  c++  

资源简介

win32、c语言、详细注释、个人理解、思维导图

资源截图

代码片段和文件信息

#include “stdafx.h“
#include “cMyTimer.h“
#include “process.h“ //多线程需要的头文件

/*******************************全局函数*********************************/
void CallBack_TimerProc(void* p) //定时器线程的回调函数
{//不停的运行定时器控制函数控制定时器运行
cMyTimer* pTimer=(cMyTimer*)p; //获取当前cMyTimer的类对象指针
if(pTimer==NULL)
{
return;
}
while(1) //不停的运行定时器控制函数
{
//检测、删除bDel状态为TRUE的定时器
pTimer->CheckDelTimer();
if(!pTimer->TimerCtrlRun()) //如果定时器运行失败就退出线程
{
_endthread();//删除线程
return;
}
Sleep(20); //睡眠20ms
}

}
/************************************************************************/


/****************************cMyTimer成员函数******************************/
cMyTimer::cMyTimer()
{

}

cMyTimer::~cMyTimer()
{

}

void cMyTimer::AddTimer(unsigned timerIDunsigned timeElapseint iParamstring strParam)
{//添加定时器,启动定时器线程

if(timeElapse==0)
{//如果定时器时间间隔为0,直接返回
return;
}

//通过传入参数,构造一个定时器数据
stTimer stTimerTemp; //定时器结构体
stTimerTemp.timerID=timerID;
stTimerTemp.timeElapse=timeElapse;
stTimerTemp.iParam=iParam;
stTimerTemp.strParam=strParam;
stTimerTemp.timeLastRun=::GetTickCount(); //当前时间(相对的不是绝对的哦)

//将构造的定时器加入到定时器列表中
m_listTimer.push_back(stTimerTemp);

//如果是第一个定时器就创建一个新的线程,其它的都跟第一个共一个线程,无需新建线程。
if(m_listTimer.size()==1)
{
//第一参数:是线程的回调函数,第三个参数:是回调函数的参数
_beginthread(CallBack_TimerProc0this); //创建定时器线程以用来运行定时器
}
}

bool cMyTimer::TimerCtrlRun()
{//判断、控制定时器的运行
if(m_listTimer.size()==0)
{//定时器列表为空,即没有定时器时
return false;
}

//判断、运行定时器。
unsigned timeNow=GetTickCount(); //获取当前时间
itListTimer it=m_listTimer.begin(); //定义定时器列表迭代器
for( ; it!=m_listTimer.end();it++) //遍历每个定时器,
{
//比较定时器上次运行的时间和当前时间差是否大于等于timeElapse
if((timeNow-it->timeLastRun) >= it->timeElapse)
{//如果大于,就运行定时器;如果小于就不运行。
it->timeLastRun = timeNow;

unsigned ret=OnTimer(it->timerIDit->iParamit->strParam);
//如果OnTimer()返回0,执行完这次后销毁该定时器。
if(ret==0)
{
//改变定时器的销毁状态为true
it->bDel=true;
}
/*else if(ret>1000)
{//根据定时器返回值修改定时器间隔
it->timeElapse=ret;
}*/
}
}
return true;
}

void cMyTimer::CheckDelTimer()
{//检测、删除bDel状态为TRUE的定时器
itListTimer it=m_listTimer.begin();
for( ;it!=m_listTimer.end(); )
{
if(it->bDel)
{
it=m_listTimer.erase(it);//删除定时器
continue;
}
it++;
}
}

void cMyTimer::DeletTimer(unsigned timerID)
{
itListTimer it=m_listTimer.begin();
for( ;it!=m_listTimer.end(); it++)
{
if(it->timerID==timerID)
{
it->bDel=true;
return;
}
}
}
/************************************************************************/

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-02-12 15:19  RunningMan\
     目录           0  2017-02-10 12:26  RunningMan\Debug\
     目录           0  2017-02-06 08:12  RunningMan\Debug\images\
     文件       13734  2015-12-08 16:06  RunningMan\Debug\images\baseplate.bmp
     文件      615478  2015-12-06 15:32  RunningMan\Debug\images\bg.bmp
     文件       13366  2015-12-08 15:43  RunningMan\Debug\images\gold.bmp
     文件       57462  2015-12-08 15:10  RunningMan\Debug\images\playerFall.bmp
     文件       56910  2015-12-08 11:21  RunningMan\Debug\images\playerJump.bmp
     文件       57462  2015-12-08 15:10  RunningMan\Debug\images\playerRoll0.bmp
     文件       57462  2015-12-08 15:11  RunningMan\Debug\images\playerRoll1.bmp
     文件       57462  2015-12-08 15:11  RunningMan\Debug\images\playerRoll2.bmp
     文件       57462  2015-12-08 11:03  RunningMan\Debug\images\playerRun0.bmp
     文件       57462  2015-12-08 11:04  RunningMan\Debug\images\playerRun1.bmp
     文件       57462  2015-12-08 11:05  RunningMan\Debug\images\playerRun2.bmp
     文件       57462  2015-12-08 11:05  RunningMan\Debug\images\playerRun3.bmp
     文件       57462  2015-12-08 11:05  RunningMan\Debug\images\playerRun4.bmp
     文件       57462  2015-12-08 11:05  RunningMan\Debug\images\playerRun5.bmp
     文件       57462  2015-12-08 15:20  RunningMan\Debug\images\playerSlip.bmp
     文件       76934  2015-12-08 15:29  RunningMan\Debug\images\post.bmp
     文件      134144  2017-02-10 13:10  RunningMan\Debug\RunningMan.exe
     文件     1160368  2017-02-10 13:10  RunningMan\Debug\RunningMan.ilk
     文件     2461696  2017-02-10 13:10  RunningMan\Debug\RunningMan.pdb
     目录           0  2017-02-05 20:53  RunningMan\ipch\
     目录           0  2017-02-05 20:53  RunningMan\ipch\runningman-7a3e600d\
     文件    20578304  2017-02-10 12:40  RunningMan\ipch\runningman-7a3e600d\runningman-d3012be9.ipch
     目录           0  2017-02-10 13:10  RunningMan\RunningMan\
     文件    33226752  2017-02-10 13:14  RunningMan\RunningMan.sdf
     文件         976  2017-02-05 20:53  RunningMan\RunningMan.sln
     文件       30208  2017-02-10 13:14  RunningMan\RunningMan.v12.suo
     文件        3051  2016-12-01 18:28  RunningMan\RunningMan\cMyTimer.cpp
     文件        2015  2016-12-03 10:55  RunningMan\RunningMan\cMyTimer.h
............此处省略54个文件信息

评论

共有 条评论