不用加入资源的`我想连到外部的图片`例如同一目录下的ren/bg.jpg
将这张图显示为背景`怎么做`代码看看

解决方案 »

  1.   

    怎么学GDI呀`不会啊`我是慢慢摸索的`好难啊`高手啊`给我段代码我打上了能工作`我研究代码更方便啊`给个函数我还不会用啊`参数看不懂msdn`
    就是debug同目录下有个ren/bg.jpg
      

  2.   


    BOOL CMyListView::ShowJpg(CDC* pDC,CString strPath, int x, int y){
         IStream *pStm;  
         CFileStatus fstatus;  
         CFile file;  
         LONG cb;      //打开文件并检测文件的有效性
        if (file.Open(strPath,CFile::modeRead)&&
             file.GetStatus(strPath,fstatus)&& 
             ((cb = fstatus.m_size) != -1))  
         {  
    HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);  
            LPVOID pvData = NULL;  
            if (hGlobal != NULL)  
             {  
    pvData = GlobalLock(hGlobal);
                if (pvData != NULL)  
                 {  
    file.ReadHuge(pvData, cb);  //6.0中可能是用这个函数
                     //file.Read(pvData, cb);  //VC2005.NET中用这个函数
                    GlobalUnlock(hGlobal);  
                    CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);  
                 } 
             }      }
        else
         {
            return false;
         } //打开文件结束
        IPicture *pPic; 
        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,x,y,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL)))  
             {
                 pPic->Release();
     pStm->Release();
     return false;
             }
             pPic->Release();  
     pStm->Release();
         }  
        else  
         {
            return false;  
         }    return true;
    }