读取JPEG和GIF图像的简单方法 CString strName; // 文件名 HDC hDC; // 绘图句柄 // 打开文件 HANDLE hFile; if( ( hFile = ::CreateFile( strName ,true ) ), GENERIC_READ, FILE_SHARE_READ , NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_SEQUENTIAL_SCAN, NULL ) ) != INVALID_HANDLE_VALUE ) { // 创建文件流 DWORD dwSize = DWORD( ::GetFileSize( hFile, NULL ) ); ASSERT( dwSize != -1 ); HGLOBAL hMemory = ::GlobalAlloc( GMEM_MOVEABLE, dwSize ); ASSERT( hMemory != NULL ); LPVOID pData = ::GlobalLock( hMemory ); ASSERT( pData != NULL ); DWORD dwCount; ::ReadFile( hFile, pData, dwSize, &dwCount, NULL ); ::GlobalUnlock( hMemory ); IStream * pStream = NULL; ::CreateStreamOnHGlobal( hMemory, TRUE, &pStream ); ASSERT( pStream != NULL ); // 从流中装入图片 IPicture * pPicture = NULL; if( SUCCEEDED( ::OleLoadPicture( pStream, dwSize, TRUE, IID_IPicture,( LPVO ID* )&pPicture ) ) ) { // 向DC中绘图 OLE_XSIZE_HIMETRIC hmWidth; OLE_YSIZE_HIMETRIC hmHeight; pPicture->get_Width( &hmWidth ); pPicture->get_Height( &hmHeight ); pPicture->Render( hDC, 0, 0, 300, 300, 0, hmHeight, hmWidth, -hmHeight, NU LL ); pPicture->Release(); } // 释放流和文件 pStream->Release(); ::CloseHandle( hFile ); }