コンボボックスのソート

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
爺プログラマー

コンボボックスのソート

#1

投稿記事 by 爺プログラマー » 15年前

リストにソート掛をけるにはCreateWindowEx(でCBS_SORTオプションを設定しますが、
順番に並んでくれません。

又、ソートの対象が今一よくわかりません。
ファイル作成日付順にするにはどの様にしたら良いか教えてください。

シエル

Re:コンボボックスのソート

#2

投稿記事 by シエル » 15年前

コードを貼っていただけますか?

爺プログラマー

Re:コンボボックスのソート

#3

投稿記事 by 爺プログラマー » 15年前

h_ComboBox1 = CreateWindowEx(0, "COMBOBOX", "",WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_DROPDOWNLIST|CBS_SORT,X, Y, 500, 200, hWnd, (HMENU)IDC_COMBOBOX, h_Inst, NULL);

strcat(INI_BUFF+Folder,"\\*.wav");
List_len = 0;
i=-1;

//ファイルの検索
hFind = FindFirstFile(INI_BUFF+Folder, &lpFileData);

next_file:

FILENAME=lpFileData.cFileName;
j=strlen(FILENAME)-4;
FILENAME[j]=0;//拡張子削除

SendMessage(h_ComboBox1, CB_ADDSTRING, 0, (LPARAM)FILENAME);

if(j > List_len)List_len = j;

if(FindNextFile(hFind,&lpFileData)!=0)goto next_file;

FindClose(hFind);

SetWindowText(h_EditBox,FILENAME);//最後のファイル名をテキストボックスに書き込む

List_len = List_len * 8;
SendMessage(h_ComboBox1,CB_SETDROPPEDWIDTH,List_len,NULL);//最大幅設定

i=SendMessage(h_ComboBox1, CB_GETCOUNT, 0, 0)-1;//行数取得

SendMessage(h_ComboBox1, CB_SETCURSEL, i, 0);//最後の行を初期表示にする
return 0;

シエル

Re:コンボボックスのソート

#4

投稿記事 by シエル » 15年前

コンボボックスのCBS_SORTのオプションはアルファベット順にソートだった気がします。
順番に並ばないというのはアルファベット順にも並ばないということですか?
ファイル作成日順に並ばないということですか?

爺プログラマー

Re:コンボボックスのソート

#5

投稿記事 by 爺プログラマー » 15年前

初期段階のCB_ADDSTRINGではアルファベット順になりますが、作成後ある項目を削除して同じアイテム番号の所にCB_INSERTSTRINGでストリングを送った後開くとそのストリングは順番になっていません。
リストの内容を変更した後ではソート対象にはならないのでしょうか?

YuO

Re:コンボボックスのソート

#6

投稿記事 by YuO » 15年前

MSDNをちゃんと読みましょう。

> Unlike the CB_ADDSTRING message, the CB_INSERTSTRING message does not cause a list with the CBS_SORT style to be sorted.
と,CB_INSERTSTRINGではソートされた状態にはならないと書いてあります。

MSDN: CB_INSERTSTRING Message (Windows)
http://msdn.microsoft.com/en-us/library/bb775875.aspx

ソートした状態を保ちたいのであれば,CB_ADDSTRINGを使ってください。

爺プログラマー

Re:コンボボックスのソート

#7

投稿記事 by 爺プログラマー » 15年前

わかりました、全てをもう一度順に送ってやればいいのですね。
リスト作成対象のフォルダーの表示順が反映されることになるようです。

ネットは人を無精者にするようです。
ちゃんと読んでいる人には頭が下がります。

閉鎖

“C言語何でも質問掲示板” へ戻る