vectorのswapについて質問いたします。

ファイルのパスと、ファイルのヘッダー部分だけを取り込んだ情報をvector FileListとしてもち、
ファイル名だけをListBoxに表示しているプログラムで、選択したファイルを上下に入れ替える
処理を書いてみました。

case IDC_BUTTON_UP:{
  int i = SendMessage(hList , LB_GETCURSEL , 0 , 0);  //リストボックスのカーソルに合わせる
  if( i== LB_ERR || i == 0 ) return (INT_PTR)TRUE;

  wchar_t file_name_buff[_MAX_PATH];        //リストボックスの入れ替え
  SendMessage(hList, LB_GETTEXT, i, (LPARAM)file_name_buff );
  SendMessage(hList, LB_DELETESTRING, i, NULL );
  SendMessage(hList, LB_INSERTSTRING, i-1, (LPARAM)file_name_buff );
  SendMessage(hList, LB_SETCURSEL, i-1, NULL );

  std::swap( FileList[i-1], FileList[i]);            //vectorのほうの入れ替え

  return (INT_PTR)TRUE;
}

リストボックスの表示はうまくいきましたが、動作確認のため

for(i=0;i<FileList.size();,i++){
  SendMessage(hDebugList, LB_ADDSTRING , 0 , (LPARAM)FileList[i].FileName.c_str());
}

のように列挙してみても、vector側の順番が変わっていません。
コンパイラからはエラーが出なかったのですがswapの書き方がまずいのでしょうか。
あるいはイテレータを使えば順番が換わっているのでしょうか。