好像用什么GDI+可以实现,可是我找不到这个文件,自己编程序应该也可以实现的,但不知道怎么弄

解决方案 »

  1.   

    http://www.vckbase.com/document/viewdoc/?id=446
    看这个,有实例代码
      

  2.   

    LZ参考下http://topic.csdn.net/t/20040727/15/3215146.html
      

  3.   

    void CShowJPGDlg::OnOK() 
    {
    CFileDialog m_dlg(TRUE,"JPG",NULL,NULL,"JPG(*.jpg)|*.JPG|gif|*.gif",this);
    if (m_dlg.DoModal()==IDOK)
    {
    CString m_filename =m_dlg.GetPathName();

    m_dir.SetWindowText(m_filename); CFile m_file(m_filename,CFile::modeRead );

    //获取文件长度
    DWORD m_filelen = m_file.GetLength(); 

    //在堆上分配空间
    HGLOBAL m_hglobal = GlobalAlloc(GMEM_MOVEABLE,m_filelen); LPVOID pvdata = NULL;
    //锁定堆空间,获取指向堆空间的指针
    pvdata = GlobalLock(m_hglobal); //将文件数据读区到堆中
    m_file.ReadHuge(pvdata,m_filelen); IStream*  m_stream; GlobalUnlock(m_hglobal); //在堆中创建流对象
    CreateStreamOnHGlobal(m_hglobal,TRUE,&m_stream); //利用流加载图像
    OleLoadPicture(m_stream,m_filelen,TRUE,IID_IPicture,(LPVOID*)&m_picture);

    m_picture->get_Width(&m_width);
    m_picture->get_Height(&m_height); CDC* dc = GetDC();

    m_IsShow = TRUE;
    CRect rect;
    GetClientRect(rect);
    SetScrollRange(SB_VERT,0,(int)(m_height/26.45)-rect.Height());
    SetScrollRange(SB_HORZ,0,(int)(m_width/26.45)-rect.Width()); m_picture->Render(*dc,1,50,(int)(m_width/26.45),(int)(m_height/26.45),0,m_height,m_width,-m_height,NULL);

    }
    }