Ipicture读JPG GIF都可以.txt

void  CImageshopView::OnDraw(CDC *  pDC) // kqy5
{
    CImageshopDoc
* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    IPicture 
*pPic;
    IStream 
*pStm;
    
    CFileStatus fstatus;
    CFile file;
    LONG cb;
    
    
if (file.Open("c:/test.jpg",CFile::modeRead)&&file.GetStatus("c:/test.jpg"
        fstatus)
&&
        ((cb 
= fstatus.m_size) != -1))
    
{
        HGLOBAL hGlobal 
= GlobalAlloc(GMEM_MOVEABLE, cb);
        LPVOID pvData 
= NULL;
        
if (hGlobal != NULL)
        
{
            
if ((pvData = GlobalLock(hGlobal)) != NULL)
            
{
                file.ReadHuge(pvData, cb);
                GlobalUnlock(hGlobal);
                CreateStreamOnHGlobal(hGlobal, TRUE, 
&pStm);
                
                
if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*
                    )
&pPic)))
                
{
                    OLE_XSIZE_HIMETRIC hmWidth;
                    OLE_YSIZE_HIMETRIC hmHeight;
                    
                    pPic
->get_Width(&hmWidth);
                    pPic
->get_Height(&hmHeight);
                    
                    
double fX,fY;
                    fX 
= (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->GetDeviceCaps(HORZSIZE)*100.0);
                    fY 
= (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->GetDeviceCaps(VERTSIZE)*100.0);
                    
if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL)))
                        AfxMessageBox(
"Failed To Render The picture!");
                    pPic
->Release();
                }

                
else
                    AfxMessageBox(
"Error Loading Picture From Stream!");
            }

        }

    }

    
else
        AfxMessageBox(
"Can't Open Image File!");
}
    

你可能感兴趣的:(txt)