******************对彩色图像进行灰度化********/void CReadBMP2View::OnImageGray() 
{
  
  CClientDC pDC(this);
  HDC hDC=pDC.GetSafeHdc();
  SetStretchBltMode(hDC,COLORONCOLOR);
  BYTE* lpBits;
  BYTE* lpbi;
  HDIB hDib;
  WORD wNumColors;
  CReadBMP2Doc* pDoc = GetDocument();
  hDib=pDoc->m_hDIB;//hDib内存包括位图信息头文件和位图象素值
  if(hDib==NULL)
  {
  return;
  }
  lpbi=(BYTE*)::GlobalLock((HGLOBAL)hDib);
  wNumColors=::DIBNumColors((LPSTR)lpbi);
  ::GlobalUnlock((HGLOBAL)hDib);
  //下面得到指向位图象素值的指针 
  if(wNumColors!=0)
  { 
  lpBits=lpbi+sizeof(BITMAPINFOHEADER)+wNumColors*sizeof(RGBQUAD);  }
  else     lpBits=lpbi+sizeof(BITMAPINFOHEADER);
   BYTE* lpDstBits;
  HANDLE lpDstBitsHandle;
  lpDstBitsHandle=::GlobalAlloc(GMEM_SHARE,WIDTHBYTES(dwWidth*8*dwHeight));
  //申请存放处理后的象素值的缓冲区
  lpDstBits=(BYTE*)::GlobalLock(HGLOBAL(lpDstBits));
  ::GlobalFree(lpDstBits);
   Gray(lpBits,lpDstBits,dwWidth,dwHeight,1);//把源区域的数据转化成灰度值放在缓冲区
  CxImage GrayImage;//建立cximage类的一个变量
  GrayImage.CreateFromArray(lpDstBits,dwWidth,dwHeight,8,(DWORD)((dwWidth+3)/4*4),false);//用缓冲区的数据建立一个灰度图像
  CRect rc1;
  rc1.top=0;
  rc1.left=dwWidth+10;
  rc1.right=2*dwWidth+10;
  rc1.bottom=dwHeight;  
  GrayImage.Draw2(pDC.GetSafeHdc(), rc1);//显示在屏幕上
}
编译通过,能够打开保存图像,但是点击灰度化按钮时就出现“0x00406c71”指令引用的“0x01120048”内存,该内存不能为“read”,调试后出现下面的提示:
Loaded symbols for 'F:\study\vc++\新项目\ReadBMP2\Debug\ReadBMP2.exe'
Loaded 'C:\WINDOWS\system32\ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
Loaded symbols for 'C:\WINDOWS\system32\MFC42D.DLL'
Loaded symbols for 'C:\WINDOWS\system32\MSVCRTD.DLL'
Loaded 'C:\WINDOWS\system32\gdi32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\user32.dll', no matching symbolic information found.
Loaded symbols for 'C:\WINDOWS\system32\MFCO42D.DLL'
Loaded 'C:\WINDOWS\system32\imm32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\advapi32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\rpcrt4.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\secur32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\lpk.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\usp10.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\msvcrt.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\mfc42loc.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\uxtheme.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\MSCTF.dll', no matching symbolic information found.
Loaded 'C:\KAV2007\KMailOEBand.DLL', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\comctl32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\shell32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\shlwapi.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\ole32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\oleaut32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\msvcr71.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\msvcp71.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\comctl32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\apphelp.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\MSCTFIME.IME', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\WINABC.IME', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\comdlg32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\clbcatq.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\comres.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\version.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\setupapi.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\userenv.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\ntshrui.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\atl.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\netapi32.dll', no matching symbolic information found.
The thread 0x78C has exited with code 0 (0x0).
The thread 0x964 has exited with code -1073741819 (0xC0000005).
The thread 0xFC has exited with code -1073741819 (0xC0000005).
The thread 0xCA0 has exited with code -1073741819 (0xC0000005).
The thread 0xBE0 has exited with code -1073741819 (0xC0000005).
The thread 0xC44 has exited with code -1073741819 (0xC0000005).
The program 'F:\study\vc++\新项目\ReadBMP2\Debug\ReadBMP2.exe' has exited with code -1073741819 (0xC0000005).请大家帮帮忙,初学的我搞了很久都不知道怎样修改!