2010-12-15 8 views
2

これは私の現在のコードですが、BITMAPINFOHEADERにキャストするときにエラーが発生します。BITMAPV5HEADERヘッダーを使用してビットマップを作成するにはどうすればよいですか?

/* Create the bitmap */ 
BITMAPINFO bmpinfo; 
ZeroMemory(&bmpinfo, sizeof(bmpinfo)); 
BITMAPV5HEADER bmpheader; 
ZeroMemory(&bmpheader, sizeof(bmpheader)); 
bmpheader.bV5Size = sizeof(BITMAPV5HEADER); 
bmpheader.bV5Width = width; 
bmpheader.bV5Height = height; 
bmpheader.bV5Planes = 1; 
bmpheader.bV5BitCount = 32; 
bmpheader.bV5Compression = BI_BITFIELDS; 
bmpheader.bV5SizeImage = width*height*4; 
bmpheader.bV5RedMask = 0x00FF0000; 
bmpheader.bV5GreenMask = 0x0000FF00; 
bmpheader.bV5BlueMask = 0x000000FF; 
bmpheader.bV5AlphaMask = 0xFF000000; 
bmpheader.bV5CSType = 0x57696e20; // LCS_WINDOWS_COLOR_SPACE 
bmpheader.bV5Intent = LCS_GM_BUSINESS; 
bmpinfo.bmiHeader = reinterpret_cast<BITMAPINFOHEADER>(bmpheader); 
void* converted = NULL; 
HDC screen = GetDC(NULL); 
HBITMAP result = CreateDIBSection(screen, &bmpinfo, DIB_RGB_COLORS, &converted, NULL, 0); 
ReleaseDC(NULL, screen); 
// Image data filled here 

どのように私はこれを正常に行うことができるのだろうか?

答えて

2

BITMAPINFOは、真の構造ではなく、カラーマップがヘッダーの後にどのように続くかについてのドキュメントです。ただ、CreateDIBSectionに直接ごBITMAPV5HEADERを渡す:

HBITMAP result = CreateDIBSection(screen, reinterpret_cast<BITMAPINFO *>(&bmpheader), DIB_RGB_COLORS, &converted, NULL, 0); 
+0

おかげで、仕事 –

+0

@マーク身代金をした:私はそれがで構造の種類を推測することができますと仮定し、 '見つけBITMAPV5HEADER'だけCreateDIBSection''に渡しについて考えました'bV5Size'を見ていましたが、私はそれに関するドキュメントを見つけることができませんでした。おそらくリンクがありますか? – phimuemue

関連する問題