如果用SetTimer()好想不太高效啊!
各位高手,还有没有别的方法或者SetTimer中比较高效的方法。

解决方案 »

  1.   

    A 需要的SetTimer秒数= 计算当前时间-6:30 COledateTime and COledateTimeSpan类B 每隔2秒执行一个定时器, 然后执行函数不停的判断当前时间和6:30时候相等(有个容差)A:方法, 还需要在系统时间更改消息发生后, 再执行函数
      

  2.   

    算出明天6点半离现在的时间,然后以算出的结果(微秒为单位)作参数调用Sleep函数,等Sleep结束,就是6点半了
      

  3.   

    哈哈哈哈
    赞同 bcpl(闲庭信步)
      

  4.   

    就用SetTimer()好了,
    其实这个函数本来就不是很准的,它本来就是在系统Idle进程间隙中得到执行的,应该没什么问题
      

  5.   

    难怪大家叫你“瞎子”,你没看见二当家的(bcpl)都告诉你了吗?
    呵呵,不过还是以毫秒为单位比较可靠。
      

  6.   

    其实每隔十秒调用Timer察看当前时间就不错的,你想一个GetCurrentTime能花费多长时间,干吗要那么高效另:无所谓高不高手,谁都没说过谁是高手,只是发表的见解多一点而已
      

  7.   

    你可以让系统帮你完成好啦!简单的dos命令"at"这是在winnt下的设置作业的操作,你可以设为6:00钟去执行的你的程序,你的程序一运行,再去开启新作业就好啦!
    简单而且是系统帮你完成!这个方便了吧!
      

  8.   

    foxmail(萧遥 www.LoveSnow.com)说的方法比较好!
      

  9.   

    CString do_hour,hh,do_min,mm;
    int h,m;
    CTime t=CTime::GetCurrentTime();   //取出当前时间
    do_hour="06";
    do_min="30";h=t.GetHour();
    m=t.GetMinute();if(h<10)
      hh.Format("0%d",h);
    else
      hh.Format("%d",h);if(m<10)
       mm.Format("0%d",m);
    else
       mm.Format("%d",m);if(do_hour.CompareNoCase(hh)==0 && do_min.CompareNoCase(mm)==0)//当前时间与6:30比较
    {   //这里加入你想要的;
    }当然这这些程序是放在OnTimer()里的
    定时器设为SetTimer(1,100,0);我这里有类似的例子,有兴趣可以留言