这里为什么要强制转换为DWORD和LPBYTE类型?
if(m_dwSizeImage==0)
{
m_lpBMIH-> biSizeImage = ((((m_lpBMIH-> biWidth *(DWORD)m_lpBMIH-> biBitCount) + 31) & ~31) > > 3) * m_lpBMIH-> biHeight;
}
m_lpvColorTable=(LPBYTE)m_lpBMIH+sizeof(BITMAPINFOHEADER);//计算调色板指针地址
}
读取图像数据区大时,为什么要先转换为DWORD类型?
计算调色板指针地址时,为什么要强制转换为LPBYTE,m_lpvColorTable是LPVOID类型
望高手指点一下,谢谢!
[解决办法]
你试想一下
int a0[10];
int *a=a0;
a=a+1;a指针实际偏移了4个单位,因为int占4个字节;等价于a=(char *)a+sizeof(int);
因为char *类型只偏移一个单位
=(LPBYTE)m_lpBMIH+sizeof(BITMAPINFOHEADER);如果不加(LPBYTE),就等于偏移了sizeof(BITMAPINFOHEADER)*sizeof(m_lpBMIH);