All pastes #830076 Raw Edit

Anonymous

public text v1 · immutable
#830076 ·published 2007-12-23 19:21 UTC
rendered paste body
int main()
{
    /* Allocate enough space for a DIB header plus palette (for
     * 8-bit modes) or bitfields (for 16- and 32-bit modes)
     */
    int dib_size = sizeof(BITMAPINFOHEADER) + 256 * sizeof (RGBQUAD);
    LPBITMAPINFO dib = (LPBITMAPINFO) malloc(dib_size);
    memset(dib, 0, dib_size);
    dib->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
    
    /* Get a device-dependent bitmap that's compatible with the
       screen.
     */
    HDC hdc = GetDC(NULL);
    HBITMAP hbm = CreateCompatibleBitmap( hdc, 1, 1 );

    /* Convert the DDB to a DIB.  We need to call GetDIBits twice:
     * the first call just fills in the BITMAPINFOHEADER; the 
     * second fills in the bitfields or palette.
     */
	printf("getting bits 1\n");
    GetDIBits(hdc, hbm, 0, 1, NULL, dib, DIB_RGB_COLORS);
	printf("BitCount is %d\n",dib->bmiHeader.biBitCount);
	if (dib->bmiHeader.biCompression == BI_BITFIELDS)
	{
		printf("BitMask is red=%08x,blue=%08x,green=%08x\n",dib->bmiColors[0].rgbRed,dib->bmiColors[0].rgbBlue,dib->bmiColors[0].rgbGreen);
	}
    GetDIBits(hdc, hbm, 0, 1, NULL, dib, DIB_RGB_COLORS);
    DeleteObject(hbm);
    ReleaseDC(NULL, hdc);

	printf("BitCount is %d\n",dib->bmiHeader.biBitCount);
	if (dib->bmiHeader.biCompression == BI_BITFIELDS)
	{
		printf("BitMask is red=%08x,blue=%08x,green=%08x\n",dib->bmiColors[0].rgbRed,dib->bmiColors[0].rgbBlue,dib->bmiColors[0].rgbGreen);
	}
    free(dib);
}