UINT CDetect::PadCompare(void* TobeExamBit,void* StandarBit, BITMAPINFO* DibInfo,UINT m_PadPass,UINT m_HolePass,UINT m_HoleMove,CRect PadRect,CRect HoleRect)
{
unsigned char * lpSrcStandard; // 指向源标准图像的指针
unsigned char * lpSrcDefect;
UINT lLineBytes=(DibInfo->bmiHeader.biBitCount) * (DibInfo->bmiHeader.biWidth);
//UINT TOTAL=lLineBytes*(DibInfo->bmiHeader.biHeight);
int DefectCount=0;
UINT StandardCount=0;
UINT DifferentCount=0;
UINT MovePix=0;
UINT SHoleCount=0;
UINT DHoleCount=0;
UINT DetectResult=0;
UINT Hundred=100;
UINT PadRectSize=PadRect.Height() * PadRect.Width();
UINT HoleRectSize=HoleRect.Height() * HoleRect.Width();

// lpSrcStandard=(unsigned char *)TobeExamBit+20000;

// BYTE n=*lpSrcStandard; for(int i=0;i<PadRect.Height();i++)
{
for(int j=0;j<PadRect.Width();j++)
{
lpSrcDefect=(unsigned char *)TobeExamBit + lLineBytes * (PadRect.top - 1 - i) + 4 * ( PadRect.left + j );
  if((BYTE)0 == *(lpSrcDefect+1) )
{
DefectCount++;
}
lpSrcStandard=(unsigned char *)StandarBit + lLineBytes * (PadRect.top - 1 - i) + 4 * ( PadRect.left + j );
if((BYTE)0 == *lpSrcStandard)
{
StandardCount++;
}
}
}源程序比较大分析不过来,是一个读取DIB进行判断的函数。老是在if((BYTE)0 == *(lpSrcDefect+1) )这里出错。想不懂为什么。图是32位的。