Here is one way to move a specific list item to the top void CTestDlg::MoveItemToTop( int itemIndex ) { CRect topItemRect; CRect itemRect; //Figure out which item is currently at the top of the list int topIndex = m_ListCtrl.GetTopIndex(); //Get the bounding rectangle around the current top item m_ListCtrl.GetItemRect(topIndex+1,&topItemRect,LVIR_BOUNDS); //Get the bounding rectangle around the desired top item m_ListCtrl.GetItemRect(itemIndex,&itemRect,LVIR_BOUNDS); //Compute the y distance between the 2 items CSize size(0,itemRect.bottom-topItemRect.bottom); //Scroll the list m_ListCtrl.Scroll(size); }