资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

为什么这么难?对话框上的一个CStatic显示BMP或JPG图像

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

看了好多类似的帖子,方法都类似,但是我测试了半天,就是没有成果。  
   
  对话框上的一个CStatic显示图像  
   
  void   CAboutDlg::OnButton1()    
  {  
  CBitmap   bmp;  
  bmp.LoadBitmap("C:\1.bmp");  
   
  m_CPhoto.ModifyStyle(0,   SS_BITMAP   &&   SS_CENTERIMAGE);  
   
  m_CPhoto.SetBitmap(bmp);  
  }  
   
  为什么图像就是不能显示出来??  
  有那位大侠能够解答一下

网友回答:

发表者:try876

上面的800,600改为你的图片的大小,也可以用  
  CRect   rect;  
  m_CPhoto.GetWindowRect(&rect);  
  rect.Width(),rect.Height()

发表者:hansblue

//加载一幅Jpg图片,CWnd要显示的控件或者窗体,strPath为jpg路径,x,y为窗体显示位置  
  //,m_type为适应显示,还是原始显示.  
  BOOL   CLoadJpeg::ShowJpgGif(CWnd   *pWnd,CString   strPath,   int   x,   int   y,int   m_type)  
  {  
          IStream   *pStm;      
          CFileStatus   fstatus;      
          CFile   file;      
          LONG   cb;      
          //打开文件并检测文件的有效性  
  CDC   *pDC=pWnd->GetDC();  
          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);      
                                  GlobalUnlock(hGlobal);      
                                  CreateStreamOnHGlobal(hGlobal,   TRUE,   &pStm);      
                          }    
                  }    
          }  
          else  
          {  
                  return   false;  
          }   //打开文件结束  
         
          //显示JPEG和GIF格式的图片,GIF只能显示一帧,还不能显示动画,  
          //要显示动画GIF请使用ACTIVE控//件。  
          IPicture   *pPic;    
          //load   image   from   file   stream  
   
          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;      
   
                  //get   image   height   and   width  
            CRect   rect;  
          GetClientRect(pWnd->m_hWnd,&rect);  
   
  if(m_type==1)  
  {  
  fX=double(rect.Width());  
  fY=double(rect.Height());  
  }  
  else  
  {  
                          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);      
                  }    
                  //use   render   function   display   image  
   
                  if(FAILED(pPic->Render(*pDC,x,y,(DWORD)fX,(DWORD)fY,0,  
                              hmHeight,hmWidth,-hmHeight,NULL)))      
                  {  
                          pPic->Release();  
                          return   false;  
                  }  
                  pPic->Release();      
          }      
          else      
          {  
                  return   false;      
          }  
          return   true;  
   
  }  
   
  //在你的窗体中这样.  
  CString   sPath;  
  CLoadJpeg   jpg;  
          sPath=_T("D:\\new.jpg");  
  jpg.ShowJpgGif(GetDlgItem(IDC_STATIC),sPath,0,0,1);  
   
  //当然可以把这个函数加在你的视图类或者对话框类中.


 

 
热门推荐笔记本: 明基笔记本
相关文章:
笔记本相关:
IT技术文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved