掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
リストビューにアイテムを追加するには? (ID:67535)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
宜しくお願いします。 環境はVC++6.0 MFC ダイアログベース、です。 ボタンを押すと、関連するアイテムをリストビューに表示したいのですが、 アイテムが一番左しか表示されません。 しかも2回目を押すと、何も表示されなくなってしまいます。 (リストビューはレポート形式です) どこか間違えているのだと思いますが、どこか分からず困っています。 宜しければご教示お願いしますm(_ _)m // 使うクラス(適切な値が入っています) CListCtrl* pListCtrl; // リストビュークラスのポインタ CStringArray itemArray; // ヘッダ配列 CMapStringToOb itemMap; // CString がキーであるCStringArrayのアイテム配列 CStringArray idArray; // マップ用のキー配列 // ヘッダを削除する CHeaderCtrl* headerCtrl = pListCtrl->GetHeaderCtrl(); for (i = 0, j = headerCtrl->GetItemCount(); i < j; i ++) { headerCtrl->DeleteItem(itemId); } // アイテムを削除する pListCtrl->DeleteAllItems(); // ヘッダを作成する HDITEM hdItem; hdItem.mask = LVCF_TEXT | LVCF_FMT | LVCF_SUBITEM | LVCF_WIDTH; hdItem.fmt = LVCFMT_CENTER; hdItem.cxy = 48; for (i = 0, j = itemArray.GetSize(); i < j; i ++) { CString item = itemArray.GetAt(i); hdItem.pszText = item.GetBuffer(item.GetLength() + 1); headerCtrl->InsertItem(i, &hdItem); item.ReleaseBuffer(); } // アイテムを作成する LVITEM lvItem; lvItem.mask = LVIF_PARAM | LVIF_TEXT; for (i = 0, j = idArray.GetSize(); i < j; i ++) { CObject* pObject; itemMap.Lookup(idArray.GetAt(i), pObject); lvItem.iItem = i; lvItem.lParam = i; for (int p = 0, q = ((CStringArray *)pObject)->GetSize(); p < q; p ++) { CString item = ((CStringArray *)pObject)->GetAt(p); int length = item.GetLength(); lvItem.cchTextMax = length; lvItem.pszText = item.GetBuffer(length + 1); lvItem.iSubItem = p; if (! p) { pListCtrl->InsertItem(&lvItem); } else { pListCtrl->SetItem(&lvItem); } item.ReleaseBuffer(); } } ヘッダはしっかりと表示出来ていますが、 headerCtrl ではなく、pListCtrl からアイテムを追加すると、 一度だけ正常にアイテムが表示されます。 しかし、すみませんが、 問題の原因と関係あるのか分からないのです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.