antenn-a
company profile

MFC航海日記 三十二日(CListCtrlでアイテムの挿入)

前回カラムの挿入を実装したので今回はアイテムの挿入を実装したいと思う。

アイテムの挿入も前回と同様で LV_ITEM 構造体を用いる。

prev


リストコントロールのデータセットの方法は、
  1. カラムを作成する
  2. カラムの数に合わせてデータを一列づつ挿入する。
という順番である。

気を付けたいのは、データを一列づつ挿入する所である。 私はそこを誤ってしまっていた。

私が想像していたデータセットの方法は、
1 2 3  <- カラム
1 4 7  <- アイテム
2 5 8
3 6 9
だと思っていたのだが実際は
1 2 3  <- カラム
1 2 3  <- アイテム
4 5 6
7 8 9
であった。

prev


さて、上記の説明を踏まえた上でアイテム挿入のコードは
void foo::SetItem( int itemnum )
{
    int             nValue = 0;
    LV_ITEM         lvi;

    //第一カラム(ファイル名)
    lvi.mask = LVIF_TEXT;
    lvi.iItem = itemnum;
    lvi.iSubItem = 0;
    lvi.pszText = "アイテム1";
    nValue = m_LstCtrl.InsertItem( &lvi );

    //第二カラム(パス)
    lvi.mask = LVIF_TEXT;
    lvi.iItem = nValue;
    lvi.iSubItem = 1;
    lvi.pszText = "アイテム2";
    m_LstCtrl.SetItem( &lvi );

    //第三カラム(更新日時)
    lvi.mask = LVIF_TEXT;
    lvi.iItem = nValue;
    lvi.iSubItem = 2;
    lvi.pszText = "アイテム3";
    m_LstCtrl.SetItem( &lvi );
}
となる。

ちなみに上記のコードは一列分なので、データをセットしたい場合はこれを何度も呼ぶ形になる。

prev


今回でアイテムの挿入も可能になった。
次回はアイテムの削除について記述したいと思う。



antenn-a

prev next


antenn-a