int nItem = m_listCtrl.GetTopIndex(); CRect rc; m_listCtrl.GetItemRect(nItem, rc, LVIR_BOUNDS); CSize sz(0, (nSel - nItem)*rc.Height()); m_listCtrl.Scroll(sz); m_listCtrl.SetItemState(nSel, LVIS_SELECTED, LVIS_SELECTED);