MFC一个小问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 01:01:12
if( ! DibInfo->bmiHeader.biBitCount ) return ;
if( palette.GetEntryCount() ! = DibInfo->bmiHeader.biBitCount ) return ;

pe = new PALETTEENTRY[palette.GetEntryCount() ] ;
palette.GetPaletteEntries( 0,palette.GetEntryCount() , pe ) ;

第2个IF语句,我感到很奇怪.
GetEntryCount() 是返回调色板中的条目数量
bmiHeader.biBitCount是每象素的位数
1位== 2色
4位==16色
8为==256色.
也就是GetEntryCount()和bmiHeader.biBitCount只是有对应关系,但是不可能是相等关系.所以程序每次到第2个IF语句,都会返回.

我想问下第2句话是不是写错了?但是代码来自一本权威书,出错可能性很小

我的理解,是这是判断创建的调色板的色彩数目与当前位图色彩数目是否相同。权威书不一定没有错。我的经验,很少有没有错误的书。自己为什么不试验下呢?if( palette.GetEntryCount() ! = DibInfo->bmiHeader.biBitCount ) return ;
改为if( palette.GetEntryCount() ! = pow(2,DibInfo->bmiHeader.biBitCount) )return ;
若程序能正常,则说明书真的出错了。

判断的仅是数值相等不相等。“条目数量” 和 “位数” 显然都是int 类型的,同类型的数可以判断相等。