ようやく一山超えた。
というわけでlogへ残しておく。
たった一つの不具合を消すために土日月(月曜日は夜だよ)と3日間費やした。
この間の仮想リストビューを利用したアイテムをralbに組み込もうとする。
CListCtrlのアイコンタイプでCImagelistのイメージを表示する時、アイテム数が多いと何回か繰り返しているうちのイメージが表示されなくなる。ちなみにCImagelistを動的に確保した後OnGetdispinfoListctrlでReplaceして画像表示している。
調べてみると似たような症状が発生しているのをフォーラムで発見。
でも、結局解決しないで終わっている。
しょうがないので自力で調べる。
とりあえずメモリ辺りが怪しいので徹底的に調べる。
いくつか勘違いによる配列の解放忘れを発見(メモリリーク)。
全て修正して若干おかしな症状はなくなったけどまだ表示されない。
さらに調べる。
タスクマネージャーでメモリの動きを見る。
どうも大量にイメージを取り込んだ際にメモリが解放されていない感じ。
CImageListにイメージを取り込んで、動的に確保と解放をしているんだけどメモリが残っている様子。おかしい。
で、いろいろ試してみる。
ひたすらいろいろ。で、見つける。
CImageList::SetImageCount( UINT uNewCount );
これ。
>この関数でイメージ リストのサイズを減らすと、
>切り捨てられたイメージが解放されます。
とのこと。
これで、CImageListを解放する前にSetImageCount(0);
をすることでイメージが解放され無事表示が出来るようになる。
これを見つけるのに3日間。
満足満足である。
CListCtrlのCImageListについて
アプリ、ソフト作り
コメント
いいブログですね、更新楽しみにしてます。
また遊びに、きまーす!