CImageListのCreateについて

解決


かわし  2005-02-27 03:55:59  No: 56554

CImageListクラスにてCreateを用いてイメージを作成する際、MSDNを
参照してみたところ、

/////////////////////////////////////////////////////////////////
CImageList::Create( int cx, int cy, UINT nFlags, int nInitial, int nGrow );

nInitial
イメージ リストが最初に保持しているイメージの数。

nGrow
システムが新しいイメージを格納するためにリストのサイズを変更する必要があるとき、イメージ リストを拡張できるイメージ数。この引数は、サイズ変更されたイメージ リストが持てる新しいイメージの数を表します。
/////////////////////////////////////////////////////////////////

と記載されていたため、私の解釈としては「nInitialの数だけADDでイメージが追加でき、nGrowが0であれば、nInitial以上のイメージは追加できない」と考えたのですが、どういうわけか「nInitial=0」,「nGrow=0」で作成してもADDにてイメージが追加できてしまいます。(ADDの戻り値も正常値)
そこで有識者の方にCreateのnInitialとnGrowの意味をご教授願いたいのです。宜しくお願いいたします。


てつや  2005-03-02 03:02:58  No: 56555

Arrayみたいに考えればわかりやすいと思います。

nGrowが1の場合、要素をAddする度に
"全数+1のポインタ配列を再確保、コピーを行った後で元のポインタアレイを削除"
を繰り返すわけです。

nGrowを10としておくと、この作業が10回までは行われず11回めで初めて実行、
さらに実行されるのは21回目になる、という事です。
(ちと乱暴ですが、主旨はわかりますよね。)


かわし  2005-03-03 00:57:52  No: 56556

ご返信ありがとう御座います。
大変よくわかりました。

ありがとうございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加