我想在SDI程序主界面中显示一张JPEG格式的图片,不知道该怎么做,那位有好的例子,不妨推荐一下或者您指导指导。

解决方案 »

  1.   

    使用IPicture  在www.codeproject.com 上有例子
      

  2.   

    http://www.vccode.com/file_show.php?id=2253
      

  3.   

    用IPicture即可/* -------- 在View中定义一个IPicture对象指针 -------- */
    IPicture* m_pPic;
    /* -------- 需要打开JPEG图片的地方 -------- */
    CFile file;
    CFileStatus fstatus;
    LONG cb;
    IStream *pStm;
    HGLOBAL hGlobal;
    LPVOID pvData;
    // 读入图片
    // 此处lpszPathName为你打开图片的路径
    if (file.Open(lpszPathName, CFile::modeRead)
    && file.GetStatus(lpszPathName, fstatus) && ((cb = fstatus.m_size) != -1))
    {
    hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
    pvData = NULL;
    if (hGlobal != NULL)
    {
    if ((pvData = GlobalLock(hGlobal)) != NULL)
    {
    file.ReadHuge(pvData, cb);
    GlobalUnlock(hGlobal);
    CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
    OleLoadPicture(pStm, fstatus.m_size, TRUE, IID_IPicture,
    (LPVOID*)&m_pPic);
    }
    }
    file.Close();
    }
    /* -------- View中显示JPEG图片(OnDraw中) -------- */
    ......
    OLE_XSIZE_HIMETRIC hmWidth;
    OLE_YSIZE_HIMETRIC hmHeight;
    m_pPic->get_Width(&hmWidth);
    m_pPic->get_Height(&hmHeight);
    m_pPic->Render(pDC->m_hDC, 左上角横坐标, 左上角纵坐标, 显示宽度, 显示高度,
    0, hmHeight, hmWidth, -hmHeight, NULL);
    ......其中hmWidth和hmHeight是HIMETRIC下的图片实际尺寸,在不同映射方式下的显示宽度、高度等需要你自己算一下。详见MSDN中对IPicture的注释。
      

  4.   

    大哥,我是新手你说的lpszPathName我在实际工程中引入仪幅图片,应该怎么写路径呢?是直接写他的ID还是写别的呢