水無瀬の部屋 > Programming > sample > exe2ico > rsrc2bmp.cpp |
---|
1: //*********************************************************
2: // プロジェクト: exe2ico
3: // ファイル名: rsrc2bmp.cpp
4: //*********************************************************
5: #include "rsrc2bmp.h"
6: #include "util.h"
7: #include <filefmt/bmpfile.h>
8:
9:
10: //*********************************************************
11: // rsrc2bmp
12: //*********************************************************
13: size_t
14: CALLBACK
15: rsrc2bmp
16: (
17: BYTE *buf,
18: size_t bufsize,
19: HMODULE hModule,
20: const char *name,
21: const char *type
22: )
23: {
24: // パラメタの仮定
25: ASSERT( IsValidInstanceHandle( hModule ) );
26: ASSERT( IsValidResourceName( name ) );
27: ASSERT( IsValidResourceName( type ) );
28: ASSERT( buf || (0 == bufsize) );
29: ASSERT( !buf || IsValidPtr( buf, bufsize ) );
30: ASSERT( !buf || (DESTROY_BUFFER( buf, bufsize ), true) ); // [破壊]
31:
32: //
33: size_t size = 0;
34:
35: //
36: const void *src = GetResourcePtr( hModule, name, type );
37: if ( src )
38: {
39: const BITMAPINFOHEADER *bih = static_cast<const BITMAPINFOHEADER *>( src );
40: if ( (BI_RGB == bih->biCompression)
41: && ( 1 == bih->biPlanes) )
42: {
43: size = CalcBitmapFileSize( bih );
44:
45: if ( buf )
46: {
47: BITMAPFILEHEADER bfh;
48: MakeBitmapFileHeader( &bfh, bih );
49: memmove( buf, &bfh, sizeof( bfh ) );
50: memmove( buf + sizeof( bfh ), src, size - sizeof( bfh ) );
51: }
52: }
53: }
54:
55: ASSERT( !buf || (size <= bufsize) );
56: ASSERT( !buf
57: || (size == rsrc2bmp( null, 0, hModule, name, type ))
58: || (bufsize <= rsrc2bmp( null, 0, hModule, name, type )) );
59: return size;
60: }//rsrc2bmp
61:
62:
63: //** end **
参照:
水無瀬の部屋 > sample > exe2ico > rsrc2bmp.cpp |
---|
このページは cpp2web が出力しました。
水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
http://katsura-kotonoha.sakura.ne.jp/prog/code/exe2ico/rsrc2bmp_cpp.shtml