我编了一个基于对话框的延时程序:
     点按钮:m_1=0;
             延时2s后,m_1=1;
    第一次点按钮时正常运行实现上述流程,但再次点按钮时,m_1仍然为1,并没有变为0
    这是怎么回事啊??
             
 void CMy555Dlg::OnButton1() 
{
// TODO: Add your control notification handler code here
   m_1=0;
   UpdateData(0);
  
       LARGE_INTEGER litmp; 
       LONGLONG QPart1,QPart2;
       double dfMinus, dfFreq, dfTim; 
       QueryPerformanceFrequency(&litmp);
       dfFreq = (double)litmp.QuadPart;// 获得计数器的时钟频率
       QueryPerformanceCounter(&litmp);
       QPart1 = litmp.QuadPart;// 获得初始值
       do
       {
          QueryPerformanceCounter(&litmp);
          QPart2 = litmp.QuadPart;//获得中止值
          dfMinus = (double)(QPart2-QPart1);
          dfTim = dfMinus / dfFreq;// 获得对应的时间值,单位为秒
       }while(dfTim<2);
           m_1=1;
   UpdateData(0);
}
 

解决方案 »

  1.   

     void CMy555Dlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here
       m_1=0;
       UpdateData(0);
      
           LARGE_INTEGER litmp; 
           LONGLONG QPart1,QPart2;
           double dfMinus, dfFreq, dfTim; 
           QueryPerformanceFrequency(&litmp);
           dfFreq = (double)litmp.QuadPart;// 获得计数器的时钟频率
           QueryPerformanceCounter(&litmp);
           QPart1 = litmp.QuadPart;// 获得初始值
           do
           {
              QueryPerformanceCounter(&litmp);
              QPart2 = litmp.QuadPart;//获得中止值
              dfMinus = (double)(QPart2-QPart1);
              dfTim = dfMinus / dfFreq;// 获得对应的时间值,单位为秒
           }while(dfTim <2);
               m_1=1;?????
       UpdateData(0);
      

  2.   

        
        m_1是编辑框的变量
        因为我在void CMy555Dlg::OnButton1()  中有:
          m_1=0; 
         UpdateData(0); 
       所以m_1应该先变为0
       程序最后有:
         m_1=1; 
         UpdateData(0); 
       m_1再变为1啊   
      

  3.   

    因为你点按钮后 又执行了一次,上述流程 :
              m_1=0;
    延时2s后,m_1=1; 所以看到的是1,而不是0