我需要实现如下一个操作:
在一个CListCtrl列表中,有大于一屏的数据项,而我通过查找,定位出了某一项,但此项并不在我的显示区域内,我需要将此项移动到用户可视区域,如何操作?
我尝试使用下述方式,但它只移动滚动条,并不移动相应的内容:
SCROLLINFO ScrollInfo;
m_listUser.GetScrollInfo(SB_VERT, &ScrollInfo);
ScrollInfo.nPos = dwIndex;
m_listUser.SetScrollInfo(SB_VERT, &ScrollInfo,TRUE);

解决方案 »

  1.   

    CListBox  可以用SetCurSel
    ClistCtrl 尝试一下SetHotItem吧,没试过,但原理相同
      

  2.   

    ClistCtrl::GetItemRect得到每一行的高度。
    ClistCtrl::Scroll移动到相应的行。
      

  3.   

    CListCtrl* pmyListCtrl;// Ensure that the last item is visible.
    int nCount = pmyListCtrl->GetItemCount();
    if (nCount > 0)
      pmyListCtrl->EnsureVisible(nCount–1, FALSE);