当给ListBox添加多行信息以后,如果让它自动下滚到最後一条? for(int i=0;i<1000;i++) m_list.AddString("test");//如何让m_list自动下滚呢?ListBox没有ListCtrl有Scroll()方法。//谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用EnsureVisible()函数,具体参考MSDN,:) yeah,MSDN最好了,只要你告诉我函数名字了。谢谢。 CListBox没有EnsureVisible,可以通过CListBox::SetTopIndex 来达到目的 //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); } 呵呵,不好意思,我用CListCtrl习惯了。自从我用过第一个CListBox后,绝对功能太少,就再也没有用过,都用CListCtrl代替了,:)顺便多嚼一下舌头,楼主上面的代码,有些缺陷:1、如果循环比较多,定义变量最好别放在循环中,如将CString str;移动到循环前;2、用的是AddString,就不用UpdateWindow了;3、因为循环中赋值是比较快的(前提是不Sleep),所以就算是要设置到最后一行,那个设置代码放在循环后面即可,放在循环体内会增加很多无谓的开销 如果你将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()); 大家帮忙想想修改了源地址的数据包有什么用? 如何将VC的代码转成VC自定义控件 急问一个简单问题:如何在CMainFrame里面获得最初建立的那个CXXXView的指针 菜鸟之问:CONTROLS里的要怎样才能添加新的控件?OLE控件? 快来帮我解决problem! 【怎样将一个网页保存成mht文件?】 燃眉之急,在北京的哪位大虾,谁有空看看这个帖子,搞定的话请吃饭,谢谢!!!! 一个奇怪的CString 问题?求教! void函数,如何中途结束? 有没有高手能解决这个问题啊!我现在真的是急了!(分不够可以再加的!) 串口通讯中怎样用dll来实现? 怎样和硬盘和内存的大小?
谢谢。
CListBox::SetTopIndex
来达到目的
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);
}
1、如果循环比较多,定义变量最好别放在循环中,如将CString str;移动到循环前;
2、用的是AddString,就不用UpdateWindow了;
3、因为循环中赋值是比较快的(前提是不Sleep),所以就算是要设置到最后一行,那个设置代码放在循环后面即可,放在循环体内会增加很多无谓的开销
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());