m_nTimer=SetTimer(1,2000,0);是两秒发送一个消息
那如果是几分钟发送一个甚至是几天发送一个时是怎么办。
SetTimer(2,900000,0);
是十五分钟发送一次但900000已经是很大的一个数了
不知第二个参数的范围是多少

解决方案 »

  1.   

    用一个工作线程,在线程中检测当前系统时间,当时间到时发送自定消息至主线程引发事件
    关键代码:HTHREAD thread = AfxBeginThread(ThreadFunc,this);...UNINT ThreadFunc(LPARAM lParam)
    {
       (CYourDialog * ) pThis = (CYourDialog * )lParam;
       CTime time = CTime::GetCurrentTime();
       if(time = pThis->m_tExcitatedTime)
       {
           pThis->PostMessage(UM_YOURDIFINE,0,0);//UM_YOURDIFINE = WM_USER + 100
        }    ...}
      

  2.   

    另外,在主窗体中用 ON_MESSAGE 或在 WINPROC 中拦截UM_YOURDIFINE即可实现事件响应