中村です。

At 30 May 2003 14:52:32 +0900 Yasuhiro.Kambe wrote:
> Q1.STREAMサイズはGetImageCount()などから算出すると思うのですが...
>     (まったく違うかも ..)どのようにメモリサイズを算出すればよいのでしょ
>     うか?

書き込む前にサイズを調べる必要はありません。ストリームに書き出されるに従っ
て勝手に伸張されます。


> Q2.CreateStreamOnHGlobal()は作ったままで終了してよいのでしょうか?
>      反する..Destroy.....()的な関数呼び出しは不要でしょうか?

COMオブジェクトですから、IStream::Releaseを呼びましょう。


> 他. 一旦Globalに取得して共用メモリに複写しているつもりですが
>   これでよろしいでしょうか?(下記ソースはイメージ読み込みストリームへ
> の書き出しのみ)

まず、グローバルメモリは自分で確保する必要はありません。
CreateStreamOnHGlobalの第一引数にはNULLを渡します。ImageList_Writeで書き終
わったら、IStream::Statを呼び出してストリームのサイズを取得し、そのサイズ
分のメモリをVirtualAllocExします。そして、GetHGlobalFromStreamでストリーム
からHGLOBALを取得し、GlobalLockしてポインタを取得してから確保したメモリに
コピーします。

実際には、ストリームのサイズも一緒に共有メモリに書き込んでおかないと読み込
むときにサイズがわからなくて困ると思いますけど。


-- 
Satoshi Nakamura <s...@zak.att.ne.jp>