我在对话框里设置时间,点击确定按钮后会触发定时器,当设定的时间和系统时间一样时,会触发一个程序。我运行后当时间相同时触发了程序可当下次时间相同时就没有触发程序。
代码是:
void CTcovDlg::OnOK() 
{ UpdateData();
SetTimer(1,1000,NULL);
ShowWindow(SW_HIDE);
//CDialog::OnOK();
}
void CTcovDlg::OnTimer(UINT nIDEvent) 
{
CString Info;
Info=m_eTime;
CString str;
CTime tm;
tm = CTime::GetCurrentTime();
str = tm.Format("%H:%M:%S");
if(Info == str)
{
    MessageBox("adsfsf");
}
CDialog::OnTimer(nIDEvent);
}
请高手给指点一下,该如何实现。谢谢。

解决方案 »

  1.   

    SetTimer(1,1000,NULL); 放到OnInitDialog()中试试
      

  2.   

    你把Info 和 str保存到文件看看,你确定是一样吗?程序不会骗人的,还是你代码的问题,你去确定一下
      

  3.   

    我想应该是把SetTimer()函数在OnOK()里导致的。OnOK()函数运行退出后,刚才建立的时钟会被自动删除掉,自然也就不响应OnTimer()函数了。楼主把SetTimer()放在别的地方试试
      

  4.   

    我把SetTimer(1,1000,NULL); 放到OnInitDialog()中也不行,第二次时间相同时依然不触发程序
      

  5.   

    第二次是没进ontimer还是没执行messagebox?你的m_eTime有改变吗?你是如何判断时间相等的?设断点看看
      

  6.   

    LZ再跟一下代码吧,把SetTimer(1,1000,NULL); 放到OnInitDialog()中我这边是可以的.CString Info; 
    Info="11:03:00"; 
    CString str; 
    CTime tm; 
    tm = CTime::GetCurrentTime(); 
    str = tm.Format("%H:%M:%S"); 
    if(Info == str) 

        MessageBox("adsfsf"); 

    CString  Info2="11:03:03";
    if(Info == str) 

        MessageBox("adsfsf"); 

    CDialog::OnTimer(nIDEvent); 
      

  7.   

    我试过楼住的代码,输入了时间之后,时间到了就会弹出东西。然后我改变edit box 的时间,当时间又到了的话,还是 会 弹出东西的。
      

  8.   

    给LZ推荐一个VC的定时器使用,有源码和大量注释,LZ一定要试下:
    http://download.csdn.net/detail/txzsp/2285350