• 締切済み

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

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

noname#12862
noname#12862

みんなの回答

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

  • リストボックス

    VB.NETでWindowsMobile5.0の開発をしてます。 リストボックスのアイテムを削除するとアイテムのフォーカスが消えてしまいます。 続けて削除としたいのですがリストボックス内のアイテムにフォーカスを移すにはどうすれば良いのでしょうか。 初歩的な質問で申し訳ありませんがよろしくお願いします。

  • リストボックスの並べ替え (VB.NET)

    こんばんは。 VB.NETのリストボックスの並べ替え方法で ListBox1.Sorted = True で並べ替えると、例えばアイテムに1~1000の数字を登録 してあった場合 1 10 100 1000 101 102 ・ ・ ・ 109 11 110 111 というようにあまり好ましい順番に並び替えしてくれないのですが、 良い並べ替え方法があったら教えて頂きたいです。 よろしくお願いいたします。

  • リストボックスからリストボックスへ(複数列)

    データ読み込み済みのリストボックス1(4列)から空白のリストボックス(4列)へ、コマンドボタンをクリックしたらデータが追加されるコードを作成しました。 Private Sub CommandButton1_Click() Dim i As Long For i = 0 To 8 With ListBox1 ListBox2.AddItem .List(.ListIndex, i) End With Next i データは追加されましたが、縦方向にデータが追加され、 横方向に追加されませんでした。 どうすれば複数列のデータをそのまま複数列のリストボックスに追加できるでしょうか。 よろしくお願いします。 End Sub

  • リストボックスのアイテム選択色変更方法

    リストボックスのアイテム選択色変更方法 リストボックスにて、表示アイテムの背景色を設定しました。 が、アイテムを選択すると背景色が分からなくなってしまいます。 と、いう事で、独自のアイテム選択色を作成したいのですが、どうしたら実現できるのでしょうか? 開発手段は、HTML、JavaScript、cssまでとして下さい。 宜しくお願いします。

    • ベストアンサー
    • HTML
  • 動的なリストボックスにしたい

    シートAには縦にコード、名称があり、シートBには横にシートAのコードがあり、それぞれのコード下に属する値の一覧があるとします。 シートAではそれぞれの行にデータの入力規則のリストを設定して該当する行のコードに対応する値をリストボックスで選ばせるようにしたいと考えています。 実際のコードは3000程度あり定期的に追加されるものとして、追加作業の手間を減らすため範囲の名前設定等は使用しないようにしたいのですがいい方法はないでしょうか。 考えているのはOFFSETでシートAのコードをINDEXとMATCHを使ってシートBから該当コードの値一覧をリストボックスに反映できないかとやってみているのですが、文字数が多くなりデータの入力規則に落とし込めません。 また、ワークセルはできるだけ使用しないで実現できればと考えています。 いい方法がありましたら教えていただけると助かります。

  • リストボックスの内容をテキストボックスに表示する。

    タイトルどおりなんですが、リストボックスの内容をテキストボックスに表示することが出来ません。 といっても、普通に表示することは出来たのですが、 今やっていることは、テキストボックスの中にある文章を表示しておいてカーソルがある部分にリストボックスの内容を表示する。。というものです。 (例) テキストボックスの中身が 「おはようございます。今日の天気はです。」 リストボックスの中身が 晴れ・曇り・雨 このとき「~天気は(ここにカーソルがある)です」 あるボタンを押すことで(ダブルクリックでもどちらでも良い) テキストボックスの内容が 「~天気は晴れ(リストボックスで選択したアイテム)です。」 と表示できるようにしたいのです。どうしても文末にしか表示することが出来ませんでした。長文で分かりづらい点が多々あると思いますが、 良い方法があれば教えてください。

  • リストボックスに追加

    リストボックスに項目を使う時にAddItemをつかいますよね。でも、AddItemをつかうと下に下にと追加されていってしまいます。これを上に上に追加していきたいのですがどうすればいいのでしょうか?

  • Access リストボックスの値リストについて

    リストボックスの値リストを「クエリ等で生成」+「固定で追加」 という事は可能でしょうか。 例えば、クエリにて「大阪府」・「兵庫県」と抽出したものに加えて 「全て」という固定値を値リストに加えたいのですが。 クエリで取得した値と、追加したい固定値をVBAで 「"大阪府";"兵庫県";"全て"」の形にできれば、あとはRowsourceにセットしてやれば良いのですが、 その具体的な方法が思いつきません。

  • セレクトボックスのデータをリストボックスへ書き出す

    javascript初心者です。よろしくお願いします。 まず年月日を3つのセレクトボックスで作成する。 追加ボタンを押すと、選択した年月日のデータをリストボックスに書き出すことができる。 ※ここでリストボックスのサイズは3に指定しておき、項目が3以上の場合はスクロールさせる。 さらに削除ボタンを作成し、リストからデータを削除できるようにする。 以上のような仕組みを作りたいのですが... どうかよろしくお願いいたします。

  • [VB2008]リストボックスで項目の重複を避ける

    タイトル通り、リストボックスに項目を追加した時に 同じ項目が2つにならないようにするにはどうすればよいでしょうか? 例えば 「あ い う」とリストボックスに入っていたとして ここに「あ」を追加した時に 「い う あ」という風になるようにしたいです。 ご回答よろしくお願いします。

専門家に質問してみよう