在下面的事件处理中,为何占击左键后,只能显示20
void CMyButton::OnLButtonDown(UINT nFlags, CPoint point)
{
    SetCapture();
    CButton::OnLButtonDown(nFlags, point);
    static_cast<Ctest2Dlg *>(AfxGetApp()->m_pMainWnd)->m_counter = 10;
    static_cast<Ctest2Dlg *>(AfxGetApp()->m_pMainWnd)->UpdateData(FALSE);    Sleep(2000);
    static_cast<Ctest2Dlg *>(AfxGetApp()->m_pMainWnd)->m_counter = 20;
    static_cast<Ctest2Dlg *>(AfxGetApp()->m_pMainWnd)->UpdateData(FALSE);
}

解决方案 »

  1.   

    m_counter 关联的是个什么控件?
      

  2.   

    Sleep(2000);把线程强制休眠,当然看不到了
    你改用非休眠的延时就可以看到效果,如
     COleDateTime  start_time = COleDateTime::GetCurrentTime();  
    COleDateTimeSpan  end_time = COleDateTime::GetCurrentTime() - start_time;  
    while(end_time.GetTotalSeconds()  <=  2)  
    {  
       MSG  msg;  
       GetMessage(&msg,NULL,0,0);  
       TranslateMessage(&msg); 
       DispatchMessage(&msg); 
       end_time = COleDateTime::GetCurrentTime() - start_time;  
    }