环境:vc++6.0 xp,我的语句如下:
str.Empty(); //清空,让显示内容为空
m_Edit.SetWindowText(str);//在编辑框控件中,显示串
UpdateData(FALSE);          //FALSE更新视图内数据
Sleep(15000);           //这之前,编辑框内应该显示为空,停顿15秒。但在执行时看不到,而是直接执行到后面的"2008,北京欢迎您!"; str="2008,北京欢迎您!";
m_Edit.SetWindowText(str);
UpdateData(FALSE);

解决方案 »

  1.   

    是在Myview类的自定义函数中使用。
      

  2.   

    譬如说一个新建的对话框工程,如果你在OnInitDialog中使用这些语句,只会让对话框出来的更晚一些。
    如果你在一个按钮的消息处理函数中使用这些语句,譬如在OnOK中使用,就可以看到效果。
    void CSleepTextDlg::OnOK() 
    {
    // TODO: Add extra validation here
    CString str;
    str.Empty(); //清空,让显示内容为空 
    m_Edit.SetWindowText(str);//在编辑框控件中,显示串 
    UpdateData(FALSE);          //FALSE更新视图内数据 
    Sleep(15000);          //这之前,编辑框内应该显示为空,停顿15秒。但在执行时看不到,而是直接执行到后面的"2008,北京欢迎您!"; 

    str="2008,北京欢迎您!"; 
    m_Edit.SetWindowText(str); 
    UpdateData(FALSE);  //CDialog::OnOK();
    }
      

  3.   

    窗口更新显示是在响应WM_PAINT消息时进行的,你执行了Sleep而没有继续处理消息,所以不会立即显示处理。
    可以在Sleep之前调用UpdateWindow(),让窗口立即响应WM_PAINT消息。
      

  4.   

    void CDictView::r_mem(int ic,CString rs)
    {
        CString str;
        str.Empty(); //清空,让显示内容为空 
        m_Edit.SetWindowText(str);//在编辑框控件中,显示串 
        UpdateData(FALSE);          //FALSE更新视图内数据 
        Sleep(15000);          //这之前,编辑框内应该显示为空,停顿15秒。但在执行时看不到,而是直接执行到后面的rs
        
        str=rs; 
        m_Edit.SetWindowText(str); 
        UpdateData(FALSE); 
    }
      

  5.   

    m_Edit.SetWindowText(str);
    UpdateData(FALSE);      
    Sleep(15000);             //这时候线程挂起,无法更新界面(更新界面是通过WM_PAINT消息,这时候线程挂起没法处理消息)。
                             //线程重新唤醒后,马上就更新为str="2008,北京欢迎您!";  前面的过程就看不到了。

                              
      

  6.   

    要达到效果,改为:m_Edit.SetWindowText(str); 
    m_Edit.UpdateWindow();  Sleep(15000);