リストの表示内容を昇順で表示されているところを降順で表示したいのですが
まったくの、初心者です。ご指導お願いします。
リストとは何の事を指しているのでしょうか?
CListViewかCListCtrlかそれともCListBoxでしょうか?
あとは何をトリガーに昇順->降順を切り替えるつもりでしょうか?
ボタンとか...
説明不足ですみません。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 );
}
本当にすみません・・・もうわかんなくて・・・
ご指導お願いします。
m_hListにリストビューコントロールのウィンドウハンドルが正しく設定されていれば
とりあえずは動くような気がしますが(昇順か降順はわからないけど)
どう悪いのでしょう?
ビルドできないのでしょうか?
それなら
ClassWizardの変数の追加で変数のタイプCListCtrlで変数を追加して
(m_Listという名前と仮定)
m_List.SortItems(CompProc, col);
でいいですよ
::SendMessage(m_hList, LVM_SORTITEMS, col, (LPARAM)CompProc);
でも大丈夫でしょう
もう少し具体的にビルドでエラーになるとか
実行するとこういった現象になるとか
実行するとエラーにはならないけど項目の順番が変更されないとか
実行するとアプリケーションエラーになるとか
順番が変更されるはずの値をCompProcで返しているのを確認したがリストに反映されないとか
LVN_COLUMNCLICKのイベントがうまくとれないとか
その辺も書いた方がいいですね
どうもすみません。
解決しちゃいました。(^_^);
何と言ったらいいのでしょうか・・
えっと、「作った関数を呼出すという行為を考えてなっかった・・」です。
呼出す、ロジックを書いてみたら問題なくできました。
降順できました。
汎用上がりにはVCは複雑です~・・