• ベストアンサー

リストコントロール(MFC or API)の最後尾にアイテムを追加するには?

 以下のような手順でリストコントロールにアイテムを追加しています。すると新しいアイテムはリストコントロールの先頭に追加されてしまいます。  先頭ではなくリストの最後尾にアイテムを挿入するにはどうしたらいいのでしょうか?  このサンプルはMFCですが回答はAPIやほかの手段を使っていても構いません。ヒントだけでも分かる方がいましたらお願いします。 LVITEM sItem; sItem.mask = LVIF_TEXT; sItem.iItem = 0; sItem.iSubItem = 0; sItem.pszText = LPSTR_TEXTCALLBACK; m_lpcList->InsertItem(&sItem);

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

LVITEM の iItem メンバーに、末尾を指す数値を入れれば良いのでは? 項目数は CListCtrl の GetItemCount() メソッドで取得できますね。 # でも MFC は、よく知りません (^^;

参考URL:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmfc98/html/_mfc_clistctrl.3a3a.insertitem.asp
nitscape
質問者

お礼

sItem.iItem = m_lpcList->GetItemCount(); と変更することで解決しました!どうもありがとうございました。

その他の回答 (1)

  • ShaneOMac
  • ベストアンサー率39% (356/898)
回答No.1

CListCtrl int InsertItem(int nItem, LPCTSTR lpszItem); nItem 挿入するアイテムの位置を整数インデックス値で指定 lpszItem アイテムのラベルを表す文字列へのポインタを指定 たぶんCListBoxと共通で-1でリストの最後だと思います。 リファレンスブック持っていませんか?

nitscape
質問者

補足

さっそくありがとうございます。しかし... sItem.iItem=-1は試してみたのですが、InsertItem()の戻り値も-1となり失敗してしまいます。 MSDNによるとこのiItemは「Zero-based index of the item to which this structure refers.」とあるのでもともと-1は違うようです。