スレを勃てるまでもないC/C++の質問はここで 17
■ このスレッドは過去ログ倉庫に格納されています
0006デフォルトの名無しさん
2010/09/22(水) 20:43:08ファイルのパスと、ファイルのヘッダー部分だけを取り込んだ情報を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の書き方がまずいのでしょうか。
あるいはイテレータを使えば順番が換わっているのでしょうか。
■ このスレッドは過去ログ倉庫に格納されています