@Brian R. Bondyアイテムの数を取得する方法を明示的に助けてくれてありがとう。 ListView_GetCountPerPageを使って(リストビューやレポートビューのために)それを行うことができるということを理解する準備が整いました。ListView_ApproximateViewRectを必要としませんがListViewの新しいサイズを知ることができます。
@Lars Truijens私はすでにLVN_ODCACHEHINTを使用していますが、バッファサイズを設定するために使用していましたが、SQLデータの最後まで読み込んで、返される行数を取得する最後の項目を見つける必要がありますODBC。それは、私がLVN_ODCACHEHINを呼び出す前に、アイテムの数を設定しなければならないと思うので、バッファを埋める必要があると思います。
私の本当の疑問は、ブライアンが答えに示唆した最適化の1つだと思います。バッファを破棄してメモリを再割り当てする際のオーバヘッドの量は、ネットワークに出てODBCの読み込みを行うオーバーヘッドよりも小さく、バッファをかなり小さくして頻繁に変更するものもあります。
これは正しいですか?
LVN_ODCACHEHINTは、通常、メインバッファを正しく埋め込み、レポートモードの行が部分的に見える場合にのみミスすると考えられます。
キャッシュのサイズの答えは、表示されたアイテムの合計数と表示されたアイテムの1行です(アイコンビューでは1行に複数のアイテムがあるためです)。
次に、WM_SIZEおよびLVN_ODCACHEHINTのそれぞれが異なる開始および終了項目番号を持つ場合は、キャッシュを再読み込みします。バッファのための一般的な答えとして
を(またはNotesのランダムなコレクションは、私がアイデアを周りいじるとして):