一个有关定时器画图的有关问题~

一个有关定时器画图的问题~~~~~
在画图时   ,一个火车要跑,我在OnInitDialog()中定义了初始位置
train1.start.x=0;
train1.start.y=126;
在用定时器时设计如下:
void   CClientDlg::OnTimer(UINT   nIDEvent)  
{
RECT   rect;
::GetClientRect(this-> m_hWnd,&rect ;
if(train1.start.x <270)
                  train1.start.x+=5;
InvalidateRect(CRect(0,120,550,230),FALSE);   //
}

这里是可以运行的,火车是可以跑了

但是,我要当火车动时,实现一个灯的变化

void   CClientDlg::DrawSignalMachine(CDC   &dc)
{  

if(train1.start.x> 20)//关键是这里,好像两个函数之间的train1.start.x不一

样,没有连起来,所以这里不能运行???????
 
    {
          for(i=0;i <3;i++)
        {
          machine1[i].SetColor2(RGB(255,255,255));
          CBrush   brush(machine1[i].color2);
          dc.SelectObject(&brush);
          dc.Ellipse(&machine1[i].rect);        
          DeleteObject(&brush);  
          }    
    }


谢谢各位哥哥了

------解决方案--------------------
跟踪调试一下
------解决方案--------------------
画灯的代码也要放在OnDraw里面