for(int i=0;i<1000;i++)
   m_list.AddString("test");//如何让m_list自动下滚呢?ListBox没有ListCtrl有Scroll()方法。
//谢谢。

解决方案 »

  1.   

    用EnsureVisible()函数,具体参考MSDN,:)
      

  2.   

    yeah,MSDN最好了,只要你告诉我函数名字了。
    谢谢。
      

  3.   

    CListBox没有EnsureVisible,可以通过
    CListBox::SetTopIndex 
    来达到目的
      

  4.   

    //SetTopIndex好像不起作用啊。 m_list.ResetContent();
    for(int i=0;i<100;i++)
    {
    CString str;
    str.Format("message #%d",i);
    m_list.AddString(str);
    m_list.UpdateWindow();
    m_list.SetTopIndex(m_list.GetCount());
    Sleep(100);
    }
      

  5.   

    呵呵,不好意思,我用CListCtrl习惯了。自从我用过第一个CListBox后,绝对功能太少,就再也没有用过,都用CListCtrl代替了,:)顺便多嚼一下舌头,楼主上面的代码,有些缺陷:
    1、如果循环比较多,定义变量最好别放在循环中,如将CString str;移动到循环前;
    2、用的是AddString,就不用UpdateWindow了;
    3、因为循环中赋值是比较快的(前提是不Sleep),所以就算是要设置到最后一行,那个设置代码放在循环后面即可,放在循环体内会增加很多无谓的开销
      

  6.   

    如果你将UpdateWindow去掉,说不定就管用了,那个函数就是干这个的,用如下代码试一试:
    CString str;
    m_list.ResetContent();
    for(int i=0;i<100;i++)
    {
    str.Format("message #%d",i);
    m_list.AddString(str);
    }
    m_list.SetTopIndex(m_list.GetCount());