我现在作一个程序,功能是这样的:连续处理数十幅图像,并且在对话框中显示图像.
同时在对话框中用CEdit实时显示相关数据.问题是:由于图像处理很耗内存和CPU,所以CEdit不能实时刷新.
请问:在不用线程的情况下,我怎样才能让CEdit得到实时更新.

解决方案 »

  1.   

    不用线程的情况下:
    如果是在一个费时的循环中:
    循环中加一个m_edit.UpdateWindow()强制刷新,或者加一个消息循环以响应windows消息
    如果是在一个费时的API中:
    没办法,线程处理
      

  2.   

    同意楼上的但是如果在短时间内Update多次的话,就基本上看不清显示的是什么内容了
      

  3.   

    如果在界面线程里面进行相当耗时间的操作,那么你的程序就可能会出现无法响应的现象,或者是响应迟钝。
    或者这样:
    将数据处理的任务分割成小的部分,然后在Idle方法里面处理你的数据,当然这需要你自己保存上次任务的完成情况。(还不如用线程来的方便)
      

  4.   

    在你的单线程代码处随处加入下面代码
    if(PeekMessage(&msg,m_hWnd,0,0,TRUE))
    {
     TranslateMessage(&msg) ;
     DispatchMessage(&msg) ;
    }
      

  5.   

    当然不是非得用多线程,方法太多了,你甚至可以在计算过程中GetDC后直接绘制一下,肯定能出来。但是不用多线程,就必须在计算过程中有个中断点来处理界面,多线程只不过是由系统来切换罢了。难道在多线程没有出来的时候就没有办法了吗?