CListCtrl怎样滚动到指定行,我看到以前有这个问题,,看到的答案是用这个CListCtrl::EnsureVisible函数,但这个函数只是把一行显示到视图区吧。
我是想通过查询来得到行号,然后滚动到指定的行加亮。

解决方案 »

  1.   

    仍然是EnsureVisible
    加亮用m_list.SetItemState(??,LVIS_SELECTED, LVIS_SELECTED);
      

  2.   

    m_List.EnsureVisible(m_List.GetItemCount()-1, FALSE);
      

  3.   


    BOOL ScrollToindex(CListCtrl *pList, int nIndex)
    {
    int nCurIndex;
    CSize siz;
    CRect rc; nCurIndex = pList->GetTopIndex();
    pList->GetItemRect(0, rc, LVIR_BOUNDS); siz.cx = 0;
    siz.cy = (nIndex - nCurIndex )*rc.Height(); return pList->Scroll(siz);
    }该函数 需要CListCtrl的Item一样的高度, 如果不一样需要修改代码, 计算高度偏移
      

  4.   

    利用 CListCtrl的 Scroll 方法可以进行滚动
      

  5.   

    使用的
    m_list.EnsureVisible(3, FALSE);
    m_list.SetItemState(3, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
    这样可以显示选中状态,第三行变成灰色的了,但是没有加亮,能否加亮呢?
      

  6.   


    SetItemState(??,LVIS_FOCUSED | LVIS_SELECTED, 0x000F);
      

  7.   

    把那个项的风格设置为高亮,就可以了。。
    LVITEM lv; 
    lv.state = LVIS_DROPHILITED; 
    m_list.SetItemState(m_nLine, &lv);