私は基本的に、List-View コントロールで得られるのと同じ仮想パフォーマンスを実現したいと考えています。List-View コントロールを使用すると、ItemCount を設定でき、LVN_GETDISPINFO 通知で、アイテムがスクロールして表示されるようになったら、アイテムの情報を入力できます。
現在、ツリービューが提供する仮想機能は非常に深いツリーに適しているため、(TVN_ITEMEXPANDING を介して) ノードが展開されたときにのみアイテムを追加し、アイテムがスクロールして表示されると、TVN_GETDISPINFO を使用してアイテム情報を入力できます。しかし、TVN_ITEMEXPANDING が何の役にも立たず、アイテムが表示されたら追加したい "常に展開された" 2 レベルのツリー (設計上の問題のみ) がある場合はどうすればよいでしょうか。問題は、既にツリーのサイズを変更する SetItemCount() などのようなものがないことです。
私の場合、アイテム情報 (テキスト、画像、選択した画像) の入力は高価な部分ではありませんが、アイテムの挿入 (すべて 1 つのレベルで) は重要です。
1 つのオプションは、表示されるアイテムと 1 つの非表示のアイテムのみを挿入することです。非表示のアイテムが表示されると (TVN_GETDISPINFO で検出されます)、さらにいくつか挿入します。しかし、下にスクロールすればするほど、スクロールバーは常に小さくなります。それは奇妙だと思います。
自分のコントロールを描画する以外に、私が望むものを達成するための他のアイデアはありますか?
ツリー全体は次のようになります。ほぼリストです。ツリーの外観が気に入っているだけです。
RootNode
|
|--Item 1
|--Item 2
|--Item 3
|--Item 4
|--Item 5
|--Item 6
|--Item 7
...
|__Item 1000