for(int i=0; i<5; ++i){
m_listCtrl.InsertItem(i, "123");
m_listCtrl.SetItemText(i, 1, "asdf");
} m_listCtrl.EnsureVisible(0, TRUE);
for (int i=1; i<5; i++)
{
m_listCtrl.EnsureVisible(i, FALSE);
}

解决方案 »

  1.   

    把m_listCtrl.InsertItem(i, "123"); 拿到循环外面去!
    如下面这样:
    m_listCtrl.InsertItem(i, "123"); 
    for(int i=0; i <5; ++i){ 
    m_listCtrl.SetItemText(i, 1, "asdf"); 
      

  2.   

    为什么要把m_listCtrl.InsertItem(i, "123"); 拿到循环外面去呢?
    我是要添加5行啊,不是只添加一行!
    也就是添加5行,显示时只显示第一行;
      

  3.   

    MSDN我找过了,但还是不知道怎么回事?
    请高手指教!
      

  4.   

    EnsureVisible并不是显示和隐藏某一行    这个函数是保证要求的那行至少可见      你要显示第一行可以先DeleteAllItems  然后加入第一行     行数太多的话更新可能会比较慢
      

  5.   

    既然不显示,你Insert其它行干吗你可以在数据需要显示的时候再InsertItem
      

  6.   


    1. for(int i=0; i <5; ++i){ 
    2. m_listCtrl.InsertItem(i, "123"); 
    3.m_listCtrl.SetItemText(i, 1, "asdf"); 
    4.} //至此,插入5行数据完成5.m_listCtrl.EnsureVisible(0, TRUE); 
    6.for (int i=1; i <5; i++) 
    7.{ 
    8.m_listCtrl.EnsureVisible(i, FALSE); 
    9.}
    //至此,插入5行数据的后4行数据,不显示
    所以,你把5-9行代码去掉。你所有插入的数据就都有显示了。