我想在一个对话框中动态的显示一个数据在计算过程中的值,这样这个数就象时刻在变化一样,可是每次都是程序在后台运行,我只能看到第一个值和计算完了的值,而且循环的次数多了,整个程序就象死机一样,如何计算一个值,就把它显示出来,请看我的程序,m_Edit为CEdit一个对象.void CDlg::OnButton1()
{
   for(int i=0;i<10000;i++)
      for(int j=0;j<10000;j++)
       {
          m_Edit=i+j;
          UpdateData(false);
       }
}

解决方案 »

  1.   

    你这个程序是在gui线程中运行的
    不是后台运行
    所以才会无法显示
      

  2.   

    创建一个线程来进行你的计算并赋值,如下所示:
    DWORD WINAPI ThreadProc(
      LPVOID lpParameter   
    )
    {
    CDlg *pDlg  = (CDlg *)lpParameter; CString szTemp;
    for(int i=0;i<10000;i++)
          for(int j=0;j<10000;j++)
           {
      szTemp.Format( "%d" , i+j );
              pDlg->SetDlgItemText( IDC_EDIT1 , szTemp ); // 这里IDC_EDIT1即为m_Edit对应的Edit控件ID
              
           }   return 0;
    }
    void CDlg::OnButton1() 
    {
    HANDLE hHandle = CreateThread( NULL , 0 , ThreadProc , this , 0 , NULL );
    CloseHandle( hHandle );

    }
      

  3.   

    哥们,把:: OnButton1()放到一个OnTimer函数里边,这样就可以看见了,当初我也遇到这个问题,建立ontimer须用ctrl+w键,然后在成员函数里点你的类CDlg加个wm-timer函数 ,然后添加函数,编辑代码,加入OnButton1()就可以了,
      

  4.   

    速度太快,可以在循环中Sleep()一下.
      

  5.   

    创建一个工作线程。GUI线程要处理消息的,尽忙循环了,没时间响应用户消息。