高分求解:关于从包中读取图片显示的奇怪问题?
我用DX做的程序,图像格式为bmp,打包后通过下面的代码读取并显示,在Win2000/XP下均正常,但在Win98中就会死机,不知道为什么!在98中跟踪程序,只有极少数情况能够在死机前跟踪到断点,问题大概在CreateDIBSection中,pBits内存申请不成功,但这是API自动处理的东西,98中有什么特殊的吗?另外,如果我对图片不打包,而直接用API LoadImage则一切正常!可是如果是我的代码问题,怎么在XP中就没事呢?望高手指教!
BITMAPFILEHEADER bmfh;
BITMAPINFO* pbmi;
BYTE* pBits;
HBITMAP hBitmap;
DWORD dwInfoSize, dwProcess;
BOOL bSuccess;
bSuccess = ReadFile( m_hPackage, &bmfh, sizeof(BITMAPFILEHEADER), &dwProcess, NULL );
if( !bSuccess || ( dwProcess != sizeof(BITMAPFILEHEADER) ) || ( bmfh.bfType != * (WORD *) "BM" ) )
return NULL;
dwInfoSize = bmfh.bfOffBits - sizeof(BITMAPFILEHEADER);
pbmi = (BITMAPINFO*) new BYTE[dwInfoSize];
bSuccess = ReadFile( m_hPackage, pbmi, dwInfoSize, &dwProcess, NULL );
if( !bSuccess || ( dwProcess != dwInfoSize ) )
{
delete []pbmi;
MessageBox( NULL, "Read file failed!", "Error", MB_ICONERROR | MB_OK );
return NULL;
}
// Create the DIB Section
hBitmap = CreateDIBSection( NULL, pbmi, DIB_RGB_COLORS, (void**)&pBits, NULL, 0 );
if( hBitmap == NULL )
{
MessageBox( NULL, "Not Enough Memory!", "Error", MB_ICONERROR | MB_OK );
delete []pbmi;
return NULL;
}
// Read in the bitmap bits
ReadFile( m_hPackage, pBits, bmfh.bfSize - bmfh.bfOffBits, &dwProcess, NULL );
delete []pbmi;
return hBitmap;