首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

这里为什么要强制转换为DWORD和LPBYTE类型?解决方法

2012-02-07 
这里为什么要强制转换为DWORD和LPBYTE类型?if(m_dwSizeImage0){m_lpBMIH- biSizeImage((((m_lpBMIH-

这里为什么要强制转换为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);

热点排行