我希望能在按下按钮后Edit 控件能够连续显示一个变化的变量。 定义了一个命令按钮,一个Edit Box 控件,该控件与一个int型变量关联;在命令按钮代码中,我让int型变量连续变化,然后赋值到关联变量,然后读取,代码如下所示: 
void CShiyan_displayDlg::OnButton1() 

  int i; 
  for(i=0;i<1000;i++) 
  { m_111=i; 
    UpdateData(FALSE); 
  } } 
现在的问题是,我按下按钮以后,Edit Box 控件只显示了一次值,即999,显示了最后一次值,请问如何让控件动态连续显示变量值啊,谢谢,谢谢!

解决方案 »

  1.   

    其它显示了
    因为速度太快没感觉
    可以加下延迟
    void CShiyan_displayDlg::OnButton1()  
    {  
      int i;  
      for(i=0;i <1000;i++)  
      { m_111=i;  
        Sleep(100);
        UpdateData(FALSE);  
      }  }  
      

  2.   


    我的思路:1、定义一个对话框类的成员变量,用来记忆数值变化,如:int m_Number = 0;2、当用户按下按钮时,启动一个定时器,定时时间设置为你两次显示的间隔时间,如 100 毫秒;3、响应 WM_TIMER 定时器消息,m_Number++ ,然后显示到编辑框中;4、再加一个停止定时器的按钮,当用户按下按钮后停止定时器,这时数值就停止显示了。
      

  3.   

    goingup说的对1000次对计算机来说太小了 
     
      

  4.   

    LZ的你的是连续输出了
    只是太快就看不出来而已
    像1楼给出的代码
    sleep(1000)一下就可以看到连续的变化了
      

  5.   

    我按照goingup 的方法加了延时,还是只显示一次啊,就是最后那个值的,郁闷啊,是什么原因呢?请大家再指教啊!谢谢
    Mackz,能不能说的更详细一点呢,比如如何启动一个定时器,如何更新编辑框呢,具体代码如何啊?谢谢的
      

  6.   

    因为你在不断地修改CEdit的内容,但是因为你正在CButton的Click消息响应函数中,
    退出之前无法处理其他消息,因此CEdit变更后的更新消息得不到响应,自然不会刷新其显示了。解决的办法之一是设置一个定时器,在每次的定时器消息中变更CEdit的值,这样每次CEdit的值变更之后都及时从消息函数中退出,转而处理其他消息,其中就包括CEdit的更新消息。另一种方法是在CButton的Click消息响应函数中再内嵌一个消息处理函数,这样每次修改了CEdit的值之后,都立即从消息队列里检索产生的新消息并处理掉,CEdit的更新消息也就不会延误了。这种方法对你的代码修改比较少,下面是例子:void CShiyan_displayDlg::OnButton1() 
    {
    int i;  
    for(i=0;i <1000;i++)  
    {
    m_111 = i;
    Sleep(10);
    UpdateData(FALSE);
    DoEvents();
    }
    }void CShiyan_displayDlg::DoEvents()
    {
    MSG msg;

    while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
    {
    DispatchMessage(&msg);
    TranslateMessage(&msg);
    }
    }
      

  7.   

    Sleep(1000);
    就是一秒变一次就可以了