OnPaint里的实现代码,在结束时,还会执行一次,请大神们帮忙给分析上

OnPaint里的实现代码,在结束时,还会执行一次,请大神们帮忙给分析下。
if (byPowerOn==1)
{
dc.FillSolidRect(0,0,m_screenX,m_screenY,RGB(0,0,0));
return;
}
if(update) update = 0;
dwTimeBetween = 5000;
switch (curStep)
{
case TAXIINFO:
dwTimeBetween = dwTextTime*1000;
if (DrvierInfo.Driver_Level==1)
{
ShowItem(&dc,pTaxiInfoMap1);
}
else if (DrvierInfo.Driver_Level==2)
{
ShowItem(&dc,pTaxiInfoMap2);
}
else if (DrvierInfo.Driver_Level==3)
{
ShowItem(&dc,pTaxiInfoMap3);
}
else if (DrvierInfo.Driver_Level==4)
{
ShowItem(&dc,pTaxiInfoMap4);
}
else if (DrvierInfo.Driver_Level==5)
{
ShowItem(&dc,pTaxiInfoMap5);
}
else
{
ShowItem(&dc,pTaxiInfoMap);
}
if(whileQuit) whileQuit = 0;
else curStep = 0xFF;
break;
case WELCOME:
ShowItem(&dc,pWelcomMap);
if(whileQuit)
{
whileQuit = 0;
}
else 
{
curStep++;
}
break;
case DRIVERINFO:

if (DrvierInfo.Driver_Level==1)
{
ShowItem(&dc,pTaxiInfoMap1);
}
else if (DrvierInfo.Driver_Level==2)
{
ShowItem(&dc,pTaxiInfoMap2);
}
else if (DrvierInfo.Driver_Level==3)
{
ShowItem(&dc,pTaxiInfoMap3);
}
else if (DrvierInfo.Driver_Level==4)
{
ShowItem(&dc,pTaxiInfoMap4);
}
else if (DrvierInfo.Driver_Level==5)
{
ShowItem(&dc,pTaxiInfoMap5);
}
else
{
ShowItem(&dc,pTaxiInfoMap);
}
if(whileQuit)
{
whileQuit = 0;
}
else 
{
curStep++;
}
break;
case NOSMOKE:
ShowItem(&dc,pNoSmokeMap);
if(whileQuit) 
{
whileQuit = 0;
}
else 
{
curStep++;
}

break;
case SEATBELT:
ShowItem(&dc,pSeatBeltMap);
if(whileQuit) 
{
whileQuit = 0;
}
else 
{
curStep++;
}
break;
case CARDINFO:
ShowItem(&dc,pCardInfoMap);
if(whileQuit) 
{
whileQuit = 0;
}
else
{
curStep++;
}
break;
case OILINFO:
ShowItem(&dc,pOilInfoMap);
if(whileQuit)
{
whileQuit = 0;
}
else
{
curStep++;
}
break;
case CALLTAXI:
ShowItem(&dc,pCallTaxiMap);
if(whileQuit) whileQuit = 0;
curStep = TEXTINFO;
break;
case TEXTINFO:
case TEXTTIMESHOW:
{
memset(textReadBuf,0,200);
textLen = 0;
textAllLen = 0;
if (curStep==TEXTINFO)
{
if(!mfile.Open(TEXT("\\ResidentFlash\\Img\\Text01"),CFile::modeRead))
{
curStep++;
break;
}
}
else
{
if(!mfile.Open(TEXT("\\ResidentFlash\\Img\\Text02"),CFile::modeRead))
{
curStep++;
break;
}
}
textAllLen = mfile.GetLength();
while(mfile.GetPosition()<textAllLen)
{
mfile.Read(textReadBuf,2);
textLen = (USHORT)(textReadBuf[0]<<8) + textReadBuf[1];
memset(textReadBuf,0,200);
mfile.Read(textReadBuf,textLen);
if(!GetSysTime(textReadBuf))
{
continue;
}
dwTimeBetween = (textReadBuf[18]*256+textReadBuf[19])*1000;
memset(TextInfoShow,0,200*sizeof(TCHAR));
Ansi2Unicode((BYTE*)textReadBuf+20,TextInfoShow,textLen-20);
ShowItem(&dc,pTextInfoMap);
if(whileQuit) 
{
break;
}
}
mfile.Close();
if(whileQuit) 
{
whileQuit = 0;
}
else