您的位置:首页 > 其它

读取JPEG和GIF图像的简单方法

2006-11-26 02:18 387 查看
读取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 ); 


}

 kind_li的专栏:显示JPGGIF图片的简单方法
http://blog.csdn.net/kind_li/archive/2002/11/28/10987.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  null file