m_buffer是一个缓冲区列表框;
m_buffer.AddString("Hello");
sleep(1000);
m_buffer.AddString("Hello");以上程序为什么是一次全部列出,而不是先出现第一个HELLO,等待1秒后,再出现第二个HELLO?
有什么函数可以解决这个问题啊?小女不才,谢谢各位大侠!

解决方案 »

  1.   

    用timer定时器
    在OnTimer()函数中写
    {
    m_buffer.AddString("hello");
    }
    每隔1000ms触发一次。
      

  2.   

    我想应该是sleep执行的时候,刷新消息被阻塞了。sleep会造成程序停止响应,最好不要这样用
    用Timer,增加一个SetTimer(),然后在响应函数中计数处理
      

  3.   

    sleep() 使当前线程阻塞【暂停】
      

  4.   

    如何在SetTimer()里面刷新消息呢?计数处理?
      

  5.   

    SetTimer是设置一个定时器,以后会根据SetTimer设置的时间间隔,程序会收到WM_TIMER消息,
    你需要响应该消息,在该消息的响应函数里面完成你对列表框的数据插入操作。计数处理,就是自己计算消息的响应次数,根据次数来选择插入不同数据的操作,如果每次插入的数据都一样,就没有计数了
      

  6.   


    在按钮函数SetTimer(1,1000,NULL);
    在此类中添加WM_TIMER消息对应OnTimer()函数
    在OnTimer()函数中写
    {
    m_buffer.AddString("hello");
    i++
    }
    //每隔1000ms触发一次。
    //i计数
    }
      

  7.   

    少了分号!
    在按钮函数SetTimer(1,1000,NULL);
    在此类中添加WM_TIMER消息对应OnTimer()函数
    在OnTimer()函数中写
    {
    m_buffer.AddString("hello");
    i++;
    }
    //每隔1000ms触发一次。
    //i计数
      

  8.   

    // 下面可以,我试过的          m_buffer.AddString("Hello");
    m_buffer.Invalidate();
    m_buffer.UpdateWindow();
    Sleep(1000);
    m_buffer.AddString("Hello");