如何让写入的文字信息迅速显示呢?谢谢我正在开发一个服务器类型的程序,其中有些部分是非常消耗时间的,比如初始化硬件。
所以,我想把程序现在做什么的信息显示在主窗口的ListBox上。--------------------------------------------------------
void CTestView::InitCard() 
{
//m_list是ListBox控件 m_list.AddString("正在初始化卡..."); 
InitTheCard();//这个函数非常耗时,比如假设是三秒吧。
m_list.AddString("完成初始化。");
}
--------------------------------------------------------我发现程序比并不是先显示"正在初始化卡...",等过了InitTheCard()之后才显示"完成初始化。"。
而是:开始什么也不显示,等完成InitTheCard()之后,突然一起显示出"正在初始化卡..."和"完成初始化。"。我希望在写出状态信息好,可以从listbox马上看到内容,这样才有意义。
该如何做呢?谢谢

解决方案 »

  1.   

    或者有么有其他的方法来显示程序当前的状态?
    快速显示的。就像下面的函数一样,可以马上显示start...,完成load_a_very_big_thing() 以后,就显示"finish load"。
    而不是最后突然一起显示出:“start”和“finish”
    ---------------------------------------------
    printf("start ...");
    load_a_very_big_thing() //非常耗时的函数
    printf("finish ");
    ---------------------------------------------
      

  2.   

    不用那么麻烦用线程,只需在显示“正在初始化”代码后加入m_list.RedrawWindow();
      

  3.   

    void CTestView::InitCard() 
    {
    //m_list是ListBox控件
    m_list.AddString("正在初始化卡..."); 
    /////////////////
    m_list.UpdateWindow();
    ////////////////
    InitTheCard();//这个函数非常耗时,比如假设是三秒吧。
    m_list.AddString("完成初始化。");
    }
      

  4.   

    呵呵,线程确实复杂化了,直接用UpdateWindow可以得,我试过了
      

  5.   

    I suppose use a Thread for Initializing the Hardware,and another thread for 
    Information display(UI thread).
    When any message in hardware initializing thread needs posted to the User,just
    Post a messge(Asynchronous Message) to the UI thread.UpdateWindow as  whwjn(菜鸟学飞) 
    or
     iamknight(侠客) ( ) 
    sometimes don't work. The message won't dispay sometimes but sometimes they do display,but
    this case is not what we want,huh :)
      

  6.   

    zhujianping_es(DavidRipple) :yep,"sometimes work,sometimes not" also not the case i want.so,would you like to give a more detail example?i want know what those server-appliaction display thier message(log info).thanks
      

  7.   

    谢谢,大家的方法和建议
    作了一下测试好象ReDrawWindow/UpdateWindow都可以啊。谢谢不过会不会有zhujianping_es(DavidRipple)说的有的时候可以有的时候不可以呢?
    要知道对于一个服务器程序来说,漏了一条信息也是很不应该的。再次感谢。
      

  8.   

    用追加的方式:
    int nLength = m_edit.SendMessage(WM_GETTEXTLENGTH);
            m_edit.SetSel(nLength, nLength);
            m_edit.ReplaceSel("abc");