掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
リストビュー(オーナードロー中)で特定の行を非表示にするには? (ID:73183)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
本来は 1.ListCtrl::DeleteAllItems()してから、 2.全ての行をListCtrl::InsertItem()する しか方法はありません。 当然ですが、2.のとき「特定のアイテム」を除外するわけですね。 この方法の場合、オーナードローかどうかは関係ありません。 オーナードローの場合で使えるテクニックとしては 1.全てのアイテムのリストを作っておく(全体リスト)。 2.特定のアイテムを除外したアイテムのリスト(表示リスト)も 作っておく。 3.InsertItem()では「全体リスト」の数分のダミー行を挿入する。 4.DrawItem()では「表示リスト」の方を表示対象とする。 で、できますよね。ただしこの場合削除した数分の余計な スクロールが発生します。 なので、それを解決するには結局 3.InsertItem()でも「表示リスト」の数分のダミー行を挿入する。 をやらざるを得ません。んで、結局最初の「本来は・・」になるわ けです。つまり本件の場合LVS_OWNERDRAWFIXEDであることは 何の解決にもなりません。 本件を根本的に解決するには「InsertItem()しなくてすむ方法」を とらざるを得ません。従って 5.LVS_OWNERDATAを使用する が、最終的な解になると思われます。この方法なら、 LVM_SETITEMCOUNTするだけで、アイテム数を設定できるからです。 当然表示対象になるのは「表示リスト」の方ですね。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.