>全部取得できるまでバッファを拡張しつつループするようにする。
ということは下記のような同じ処理を何回もするということですよね?
1.GlobalAllocで領域確保
↓
2.LVM_GETITEMTEXTで文字列取得
↓
3.領域が足りなかったら領域を開放をして1に戻ってやり直し
↓
4.取得した文字列をどっかに表示して領域の開放
という処理をするのですよね?

そういうことをしたら遅くなりませんかね?

つまりこういうことですか?
最初にこれぐらいあったら充分だろと思える領域を確保!
それから1をする・・・のかな?