//---------------------------------------------------------------------------- // FUNCTION: LoadBitmapFromBuffer // DESC: 从缓冲区中加载位图并返回句柄 //---------------------------------------------------------------------------- HBITMAP LoadBitmapFromBuffer(LPBYTE pBuffer, DWORD cbSize) { BITMAPFILEHEADER *pbmfHeader = LPBITMAPFILEHEADER(pBuffer);// File type should be 'BM' BITMAPINFOHEADER *pbmiHeader = LPBITMAPINFOHEADER(pBuffer + sizeof(BITMAPFILEHEADER)); BITMAPINFO *pbmInfo = LPBITMAPINFO (pBuffer + sizeof(BITMAPFILEHEADER)); // If bmiHeader.biClrUsed is zero we have to infer the number of colors from the number of bits used to specify it. int nColors = pbmiHeader->biClrUsed ? pbmiHeader->biClrUsed : 1 << pbmiHeader->biBitCount; if (pbmfHeader->bfType != (WORD('M' << 8) | 'B')) { return NULL; } LPVOID lpDIBBits; if( pbmInfo->bmiH