• 締切済み

[WIN32/SDK] リストボックス(初級)

リストボックスにアイテムを追加後に ソートさせたいんですが、 どのような方法でできますか? お願いします。

みんなの回答

noname#12874
noname#12874
回答No.1

[質問主です] GetWindowLong, SetWindowLong で リストボックスのウインドウスタイルを変更して LBS_SORT を追加してもソートされなかったので、 以下のようにして解決しました。 void SortListItem (HWND hListBox){  int i;  int count ; // リストボックスアイテム数  char* ptr;  count = ListBox_GetCount (hListBox); // リストのアイテム数取得  ptr = (char*)malloc (BUF_SIZE*count); // BUF_SIZE : 十分大きい値  if(ptr){   ZeroMemory (ptr, BUF_SIZE*count);   for (i=0; i<count; i++){    ListBox_GetText(hListBox, 0, ptr + i*BUF_SIZE);    ListBox_DeleteString(hListBox, 0);   }   for (i=0; i<count; i++)    ListBox_AddString (hListBox, ptr + i*BUF_SIZE);   free(ptr);  } } // qsort 関数用 int qsort_item (const void* a, const void* b){  return strcmp ((char*)a, (char*)b); }

noname#12862
質問者

お礼

void SortListItem (HWND hListBox){  int i;  int count ; // リストボックスアイテム数  char* ptr;  count = ListBox_GetCount (hListBox); // リストのアイテム数取得  ptr = (char*)malloc (BUF_SIZE*count); // BUF_SIZE : 十分大きい値  if(ptr){   ZeroMemory (ptr, BUF_SIZE*count);   for (i=0; i<count; i++){    ListBox_GetText(hListBox, 0, ptr + i*BUF_SIZE);    ListBox_DeleteString(hListBox, 0);   }   qsort (ptr, count, BUF_SIZE, qsort_item); // <========== 忘れてました。   for (i=0; i<count; i++)    ListBox_AddString (hListBox, ptr + i*BUF_SIZE);   free(ptr);  } } // qsort 関数用 int qsort_item (const void* a, const void* b){  return strcmp ((char*)a, (char*)b); }

関連するQ&A