我要做一个演讲比赛的倒计时器
用vc控件(我不会别的)
怎么实现呢?
在对话框里
我设置了两个按纽一个是开始计时,一个是计时结束
计时显示的应该是数字,从12:00(12分钟)一直变到00:00这应该怎么实现呢

解决方案 »

  1.   

    简单点的,用ontimer记时器
    烦的用多线程~~~
      

  2.   

    lixiaosan(小三) ( 五星(高级)) 信誉:148  2007-06-07 16:27:09  得分:0

    SetTimer
    KillTimer
    能否说的详细一点呢?
      

  3.   

    void CMyStatic::OnTimer(UINT nIDEvent) 
    {
    // TODO: Add your message handler code here and/or call default
    m_time--;
    UpdateData(FALSE);
    CStatic::OnTimer(nIDEvent);
    }void CMyStatic::SetUp()
    {
    this->SetTimer(1,1000,NULL);
    }void CMyStatic::SetDown()
    {
    this->KillTimer(1);
    }
    m_time是以秒为单位的,12*60,这样就可以了`
      

  4.   

    //倒记时逻辑,实验过,没有问题
    //变量就不用我说了吧,对应英文的意思
    if((Second=Second-1)<0)
        {
    Second=59;
    if(Minite>0)
    {
      Minite=Minite-1;
    }
            else
    {
      Minite=59;
      if(Hour>0)
      {
        Hour=Hour-1;
      }
      else
      {
        Hour=23;
        if(Day>0)
        {
          Day=Day-1;
        }
        else
        {
         Day=364;
         if(Year>0)
         {
    Year=Year-1;
         }
       }
    }
          }
      }
      

  5.   

    msdn怎么用 其实现在还不是很清楚  但是觉得大家都用 肯定有他的优势 
    恩应该多看看了
      

  6.   

    void CTimetest::OnTimeStart()//计时器初始化
    {
    //MessageBox("start");// TODO: Add your control notification handler code here
    //m_nTimer=SetTimer(1,1000,0);
    this->SetTimer(1,1000,NULL);
        m_time=12*60;
    //OnDisplayTime(12,0); KillTimer(1);
    }
    void CTimetest::OnTimer(UINT nIDEvent)//计时器开始之后
    {   
    //  sj--;
    //  if(sj)
    //  {
    //  display_time;
    //  }else
    //  {
    //  KillTimer(1);
    //  OnTimeEnd() 
    //  }
    //  MessageBeep(0xFFFFFFFF);   // Beep
    // 
    // Call base class handler.

    while (m_time!=0)
    {

    m_time--;
    UpdateData(FALSE);
    int Minite=m_time/60;
    int Second=m_time%60;
    //int Hour=0,Day=0,Year=0;
    if((Second=Second-1)<0)
    {
    Second=59;
    if(Minite>0)
    {
    Minite=Minite-1;
    }
      else
      {
      Minite=59;
    //  if(Hour>0)
    //  {
    //  Hour=Hour-1;
    //  }
    //  else
    //  {
    //  Hour=23;
    //  if(Day>0)
    //  {
    //  Day=Day-1;
    //  }
    //  else
    //  {
    //  Day=364;
    //  if(Year>0)
    //  {
    //  Year=Year-1;
    //  }
      }
    }


    //m_time--;
    //UpdateData(FALSE);
    CString strTmp;
    strTmp.Format(_T("d%:d%"),Minite,Second);
        MessageBox(strTmp);
    //OnDisplayTime(Minite,Second);
    }
    CDialog::OnTimer(nIDEvent);

    }
    void CTimetest::OnTimeEnd() 
    {
    //MessageBox("end");// TODO: Add your control notification handler code here
    //KillTimer(m_nTimer);
    this->KillTimer(1);
    }大家看看我的代码有什么问题 怎么运行不出结果呢 编译已经通过
      

  7.   

    在OnTimer里判断
    if(0 == m_time)
    {
    KillTimer(1);
    }