HBITMAP CreateHBitmapFromBuffer(HDC hdc, SIZE *pSize, char *buf)
{
BITMAPINFOHEADER bmih;
BITMAPINFO bmi;
memset( (void*)&bmih, 0, sizeof(bmih) );
bmih.biSize = sizeof(BITMAPINFOHEADER);
bmih.biWidth = pSize->cx;
bmih.biHeight = pSize->cy;
bmih.biPlanes = 1;
bmih.biBitCount = 24;
bmih.biCompression = BI_RGB;
memset( (void*)&bmi, 0, sizeof(BITMAPINFO) );
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biWidth = pSize->cx;
bmi.bmiHeader.biHeight = pSize->cy;
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biBitCount = 24;
bmi.bmiHeader.biCompression = BI_RGB;
return CreateDIBitmap(hdc, &bmih, CBM_INIT, buf, &bmi, DIB_RGB_COLORS);
}