请问以下几句该如何理解:
BYTE *pbyHead;
DWORD dwHeadSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+(256*sizeof(RGBQUAD));
HGLOBAL hHead=::GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT,dwHeadSize);
pbyHead=(BYTE *)GlobalLock(hHead);
m_pBitmapFileHeader=(BITMAPFILEHEADER*)pbyHead;
m_pBitmapInfoHeader=(BITMAPINFOHEADER *)(pbyHead+sizeof(BITMAPFILEHEADER));
m_pBitmapInfo=(BITMAPINFO *)(pbyHead+sizeof(BITMAPFILEHEADER));
m_pRGBQuad=(RGBQUAD *)(pbyHead+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER));
特别是第二句为什么要*256,GlobalAlloc和GlobalLock是什么意思?
DWORD dwHeadSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+(256*sizeof(RGBQUAD));
//计算位图信息头的结构的大小,BITMAPFILEHEADER
//256*sizeof(RGBQUAD)是调色板的大小。因为256色以下的才用到调色板,所以*256,最大。
GlobalAlloc;//锁住内存块,并返回该内存块的首地址
后面就是给"位图信息头结构"(BITMAPFILEHEADER)赋值。