リストの表示内容をソートするには? – プログラミング – Home

リストの表示内容をソートするには?
 
通知
すべてクリア

[解決済] リストの表示内容をソートするには?


おか
 おか
(@おか)
ゲスト
結合: 24年前
投稿: 1
Topic starter  

リストの表示内容を昇順で表示されているところを降順で表示したいのですが
まったくの、初心者です。ご指導お願いします。


引用未解決
トピックタグ
ku
 ku
(@ku)
ゲスト
結合: 25年前
投稿: 312
 

リストとは何の事を指しているのでしょうか?
CListViewかCListCtrlかそれともCListBoxでしょうか?
あとは何をトリガーに昇順->降順を切り替えるつもりでしょうか?
ボタンとか...


返信引用
おか
 おか
(@おか)
ゲスト
結合: 24年前
投稿: 2
 

説明不足ですみません。CListCtrlです。
ファイル(csv)の中身をwhile文でnull又はFalseになるまで、読み込み
表示しているので、必然的に昇順になっているのですが、
その表示を降順に変えたいのですが、
一旦ファイルの中身を吐き出してから、その吐き出し先(リスト)をソートできないかと
思うのですが。

//昇順・降順フラグ定義
int iItemSort[4];

int CALLBACK CompProc(LPARAM lp1, LPARAM lp2, LPARAM lp3)
{
LV_FINDINFO lvf;
int nItem1, nItem2;
char buf1[1024], buf2[1024];

lvf.flags = LVFI_PARAM;
lvf.lParam = lp1;
nItem1 = ListView_FindItem(m_hList, -1, &lvf);

lvf.lParam = lp2;
nItem2 = ListView_FindItem(m_hList, -1, &lvf);

ListView_GetItemText(m_hList, nItem1, (int)lp3, buf1, sizeof(buf1));
ListView_GetItemText(m_hList, nItem2, (int)lp3, buf2, sizeof(buf2));

if (iItemSort[lp3] == UP) {
return(strcmp(buf1, buf2));
} else {
return(strcmp(buf1, buf2) * -1);
}
}

//並び替え実行の呼び出しを行う
//引数には、カラムのインデックスが渡される。
void CLogView::ListSort(int col)
{
// BOOL SortItems(CompProc,col);
BOOL SortItems( PFNLVCOMPARE pfnCompare, DWORD dwData );
}

本当にすみません・・・もうわかんなくて・・・
ご指導お願いします。


返信引用
ku
 ku
(@ku)
ゲスト
結合: 25年前
投稿: 312
 

m_hListにリストビューコントロールのウィンドウハンドルが正しく設定されていれば
とりあえずは動くような気がしますが(昇順か降順はわからないけど)

どう悪いのでしょう?
ビルドできないのでしょうか?
それなら
ClassWizardの変数の追加で変数のタイプCListCtrlで変数を追加して
(m_Listという名前と仮定)
m_List.SortItems(CompProc, col);
でいいですよ
::SendMessage(m_hList, LVM_SORTITEMS, col, (LPARAM)CompProc);
でも大丈夫でしょう

もう少し具体的にビルドでエラーになるとか
実行するとこういった現象になるとか
実行するとエラーにはならないけど項目の順番が変更されないとか
実行するとアプリケーションエラーになるとか
順番が変更されるはずの値をCompProcで返しているのを確認したがリストに反映されないとか
LVN_COLUMNCLICKのイベントがうまくとれないとか
その辺も書いた方がいいですね


返信引用
おか
 おか
(@おか)
ゲスト
結合: 24年前
投稿: 2
 

どうもすみません。
解決しちゃいました。(^_^);
何と言ったらいいのでしょうか・・
えっと、「作った関数を呼出すという行為を考えてなっかった・・」です。
呼出す、ロジックを書いてみたら問題なくできました。
降順できました。
汎用上がりにはVCは複雑です~・・


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました