我欲将BMP图像的某个部分复制至内存,基本代码如下:
hNewDIB = (HDIB)::GlobalAlloc(GHND, lineBytes * devide_Height + *(LPDWORD)lpBigDIB + ::PaletteSize(lpBigDIB));//lineBytes为每行字节数,//lpBigDIB为lpBigDIB = (LPSTR)::GlobalLock((HGLOBAL)hBigDIB);
         
lpNewDIB = (LPSTR)::GlobalLock((HGLOBAL)hNewDIB);
lpNewDIBBits = (BYTE*)::FindDIBBits(lpNewDIB);memset(lpNewDIB,0,lineBytes * devide_Height+ *(LPDWORD)lpBigDIB  + ::PaletteSize(lpBigDIB));//初始化内存为0memcpy(lpNewDIB,lpBigDIB,*(LPDWORD)lpBigDIB + ::PaletteSize(lpBigDIB));
//复制位图信息头//创建新图像信息头
lpNewbmpinfo = (LPBITMAPINFOHEADER)lpNewDIB;
lpNewbmpinfo->biHeight = devide_Height;
lpNewbmpinfo->biWidth=BigBmp_Width;
lpNewbmpinfo->biSizeImage=lineBytes * devide_Height;
//开始复制图像至内存
   for(i=0,j=0;i<BigBmp_Height && j<devide_Height;i++,j++)
{
   memcpy(lpNewDIBBits + j * lineBytes,lpBigDIBBits + lineBytes * i,lineBytes);
}我调试的时候发现lpNewDIB的值为很长的一串y,y上面有两点,而lpBigDIB的值为
0x0dce1024,是正常值。二者均定义为LPSTR 类型,为什么lpNewDIB得到不正常的值呢