如题,我的Listctrl重新加载icon进来后,滚动条的位置位于最左端了,而我此时选中的项(用一个int变量记录)是位于最后,1.我想让这个滚动条滚到我相应选中的item项,如何解决。2.重新加载进来后,我原来选中状态的item现在没有状态了,如何为该item重新设置选中高亮度的状态?谢谢回复。

解决方案 »

  1.   

    1、CListCtrl::Scroll()
    2、CListCtrl::SetItemState行不行?
      

  2.   

    1. EnsureVisible
    2. SetItemState(i, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
      

  3.   

    我的listctrl有水平滚动条,最后一项就是listctrl中最右边的那一项。我用iyranly的方法试过了,可以,但是反应很慢,得等好几秒钟才看到滚动过去和状态设置成功。有时不滚动也不设置状态,奇怪得很。CListCtrl& ListCtrl = GetListCtrl();
    ListCtrl.Scroll(CSize(120*m_nFirstSelected),1);
    ListCtrl.SetItemState(m_nFirstSelected,LVIS_SELECTED |LVIS_FOCUSED, LVIS_SELECTED |LVIS_FOCUSED);
      

  4.   

    ListCtrl.Scroll(CSize(120*m_nFirstSelected,1)); 
      

  5.   

    SendMessage(WM_HSCROLL,   SB_BOTTOM);
      

  6.   

    先滚动,再选中
    注意是对listctrl发消息
      

  7.   

    是不是你的程序中因为重新加载图标的问题。我在测试让ListCtrl根据我设置的参数滚动,选中都很正常。