回答編集履歴

1

サンプルコード追加

2019/12/23 12:57

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -17,3 +17,39 @@
17
17
 
18
18
 
19
19
  `IStream`は[`GlobalAlloc`](https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-globalalloc)でメモリ確保して得られたハンドルに対して[`CreateStreamOnHGlobal`](https://docs.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-createstreamonhglobal)を呼ぶと生成できます。
20
+
21
+
22
+
23
+ (追記)
24
+
25
+ 以下のコードでメモリ上のPNGデータをCImageに読み込めることを確認しました。
26
+
27
+ エラーチェックは省いています。
28
+
29
+ ```C++
30
+
31
+ IStream* pIstream = NULL;
32
+
33
+ //IStream生成
34
+
35
+ CreateStreamOnHGlobal(NULL, TRUE, &pIstream);
36
+
37
+ //PNGデータ書き込み
38
+
39
+ pIstream->Write(PNGデータポインタ, PNGデータサイズ, NULL);
40
+
41
+ //CImageに読み込み
42
+
43
+ CImage image;
44
+
45
+ image.Load(pIstream);
46
+
47
+ //CImageを使用した操作(例としてBMP保存)
48
+
49
+ image.Save(_T("c:\tmp\test.bmp"), Gdiplus::ImageFormatBMP);
50
+
51
+ //IStream解放
52
+
53
+ pIstream->Release();
54
+
55
+ ```