void CALLBACK MyTimerProc(HWND hwnd,UINT message,UINT iTimerID,DWORD dwTime);//函数声明{                  //这是线程里的一段代码,实现定时
int t;
CString c;
pDlg->GetDlgItemText(IDC_EDIT16,c);
t=atoi(c);
t*=3600000;             //奇怪地的我要是定时10分钟即改为 t*=600000; 定时能实现每10分执行MyTimerProc函数操作。
pDlg->SetTimer(2,t,MyTimerProc);                               改为t*=3600000;就不不起作用了。
dsbz=1;
}void CALLBACK MyTimerProc(HWND hwnd,UINT message,UINT iTimerID,DWORD dwTime)//定时功能函数
{
nzzb2=1;
dsbz=0;

}请大侠指点一二!

解决方案 »

  1.   

    长时间定时可以用CreateWaitableTimer、SetWaitableTimer
      

  2.   


    #define USER_TIMER_MAXIMUM  0x7FFFFFFF
    #define USER_TIMER_MINIMUM  0x0000000A自己做循环吧,数据太大了
      

  3.   

    [in] Specifies the time-out value, in milliseconds. 
    Windows NT/2000/XP: If uElapse is greater than USER_TIMER_MAXIMUM, the timeout is set to 1.Windows 2000/XP: If uElapse is less than USER_TIMER_MINIMUM, the timeout is set to USER_TIMER_MINIMUM.Windows Server 2003: If uElapse is greater than USER_TIMER_MAXIMUM, the timeout is set to USER_TIMER_MAXIMUM.Windows XP SP2/Windows Server 2003 SP1: If uElapse is less than USER_TIMER_MINIMUM, the timeout is set to USER_TIMER_MINIMUM. If uElapse is greater than USER_TIMER_MAXIMUM, the timeout is set to USER_TIMER_MAXIMUM.
      

  4.   


    没有吧,我的定时几个小时呢 不过是在OnTimer里面执行的....都可以正常运行啊 vs2008
      

  5.   

    大哥,3600000没有大于0x7FFFFFFF啊?我t取值为1滴,请指教!谢谢!