VC++6.0如何在对话框显示JPG图像,最好用COM的,谢谢大家~

解决方案 »

  1.   

    放一个static,捕获WM_PAINT之后在static的位置上画
    为什么要用COM?
      

  2.   

    放一个picture控件上去,给其添加变量CPictureCtrl m_wndPict;然后载入你的图片到工程,在对话框的OnInitDialog中添加m_wndPict.SubclassDlgItem(IDC_IMAGEMYDOG, this);即可。具体的例子可以到这里免费下来看看http://download.csdn.net/source/2350936
      

  3.   

    方式很多难易有别。。最简单的用staticle
      

  4.   

    如果用COM,应该用IPicture 接口,下面有个例子,不妨看看:    IPicture *pPic;    IStream *pStm;    CFileStatus fstatus;    CFile file;    LONG cb;    if (file.Open(_T("a.jpg"),CFile::modeRead)&&file.GetStatus(_T("a.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.Read(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;                    CRect rect;                    GetClientRect(rect);                    fX=rect.Width();                    fY=rect.Height();                    if(FAILED(pPic->Render(*pDC,0,0,hmWidth/25.4,hmHeight/25.4,0,hmHeight,hmWidth,-hmHeight,NULL)))
                            AfxMessageBox(_T("Failed To Render The picture!"));
                        
                        pPic->Release();                }                else                    AfxMessageBox(_T("Error Loading Picture From Stream!"));            }        }    }    else        AfxMessageBox(_T("Can't Open Image File!"));