我已经获得了初始时间,我想设置成5分钟后时间用完。所以我想从现在开始进行5分钟的倒计时。但是好像初始时间是不能直接加5分钟的(时间不支持加号运算符)请问该如何办呢?怎么实现倒计时呢?

解决方案 »

  1.   

    CTime 支持+ -的
    CTimeSpan 就是时间间隔类
      

  2.   

    比如:CTime tm1;
    tm1 = ...int iMinutes = (CTime::GetCurrentTime() - tm1).GetTotalMinutes();
    //iMinutes就是 当前时间 和 tm1的分钟差值
      

  3.   

    我现在是用SDK编程,里面不支持,那怎么办呢?SDK里面的SYSTEMTIME结构不支持+、-时间的啊!
      

  4.   

    SDK也有定时器SetTimer
    The SetTimer function creates a timer with the specified time-out value. UINT SetTimer(
      HWND hWnd,              // handle of window for timer messages
      UINT nIDEvent,          // timer identifier
      UINT uElapse,           // time-out value
      TIMERPROC lpTimerFunc   // address of timer procedure
    );该函数在sdk 也可用
      

  5.   

    time()返回的就是秒数,可以直接加减
      

  6.   

    设置一个1秒钟的计时器(也可以是其他的固定时间间隔),在ON_TIMER的处理中自己做倒计时,这样想要增减倒计时的时间均很方便了
      

  7.   

    不知道别的方法
    你可以一位一位的算
    把两个SYSTEMTIME一位一位的减
       (tmNow.wHours - tmOld.wHours) * 60
     + (tmNow.wDay   - tmOld.wDay) * 24 * 60
     + ...
    就得到分钟差了
      

  8.   

    初始化,设置倒计时时间
    time_t   now, after_5_min;
    ...
    time(&now);
    after_5_min = now + 5 * 60;
    ....计时器过程中
    time(&now);
    if(now >= after_5_min)
    {
       // 已经过了5分钟
    }
      

  9.   

    我开始就是一位一位的算,这种思想我想到了。用这种方法碰到的问题就是时间是60进制的,所以总是不能始终得到正确的差值,显示不正确。要是能想MFC里面自动用时间区减就好了,不要考虑进制的问题。我打算用zcpro建议的按秒算方法试试。谢谢大家。谁对我就给谁分。
      

  10.   

    用GetTickCount()得到一个时间
    每次减去最开始的GetTickCount返回的值.得到的就是运行的毫秒数.