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);
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);