进入旧版 | 服务项目 | 成功案例 | 联系方式 | 过客留言 | 友情链接
   
设为首页
加入收藏
联系我们
网站首页 | 新闻资讯 | 操作系统 | 办公软件 | 网络软件 | 工具软件 | 媒体动画 | 网页制作 | 网站开发 | 程序开发 | 平面设计
Photoshop视频教程 | Word入门 | Flash入门 | JScript | VBScript | ASP | PHP | ADO | 网页特效 | 3DS MAX6.0命令 | 系统进程
您当前的位置:GOODSGY电脑学习网 -> 程序开发 -> C/C++ -> 文章内容  
C/C++:如何在程序中加载JPG图片?

  MFC提供的CWnd只有默认加载BMP文件的接口,对JPG等图像是不支持的,而实际中经常需要用到非BMP的图片,加载它们需要使用COM技术。首先写如下函数:www.goodsgy.com

以下是引用片段:

BOOL LoadMyJpegFile(CString fname,LPPICTURE *lppi)
{
 HANDLE hFile=CreateFile(fname,GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
www.goodsgy.com

 if(hFile==INVALID_HANDLE_VALUE)
 {
  CString str;
  str.Format(_T("%s无法被打开"),fname);
  MessageBox(str);
  return FALSE;
 }
 //取得文件大小
 DWORD dwFileSize=GetFileSize(hFile,NULL);
www.goodsgy.com

 if((DWORD)-1==dwFileSize)
 {
  CloseHandle(hFile);
  MessageBox(_T("图像文件是空的"));
  return FALSE;
 }
 //读取图像文件
 LPVOID pvData;
www.goodsgy.com

 //按文件大小分配内存
 HGLOBAL hGlobal=GlobalAlloc(GMEM_MOVEABLE,dwFileSize);
www.goodsgy.com

 if(NULL==hGlobal)
 {
  CloseHandle(hFile);
  MessageBox(_T("内存不足,无法分配足够内存"));
  return FALSE;
 }
www.goodsgy.com

 pvData=GlobalLock(hGlobal);
 if(NULL==pvData)
 {
  GlobalUnlock(hGlobal);
  CloseHandle(hFile);
  MessageBox(_T("无法锁定内存"));
  return FALSE;
 }
www.goodsgy.com

 DWORD dwFileRead=0;
 BOOL bRead=ReadFile(hFile,pvData,dwFileSize,&dwFileRead,NULL);
 GlobalUnlock(hGlobal);
 CloseHandle(hFile);
 if(FALSE==bRead)
 {
  MessageBox(_T("读文件出错"));
  return FALSE;
 }
www.goodsgy.com

 LPSTREAM pstm=NULL;
 //从已分配内存生成IStream流
 HRESULT hr=CreateStreamOnHGlobal(hGlobal,TRUE,&pstm);
www.goodsgy.com

 if(!SUCCEEDED(hr))
 {
  MessageBox(_T("生成流操作失败"));
  if(pstm!=NULL)
   pstm->Release();
  return FALSE;
 }
 else if(pstm==NULL)
 {
  MessageBox(_T("生成流操作失败"));
  return FALSE;
 }
www.goodsgy.com

 if(!*lppi)
  (*lppi)->Release();
 hr=OleLoadPicture(pstm,dwFileSize,FALSE,IID_IPicture,(LPVOID*)&(*lppi));
 pstm->Release();
 if(!SUCCEEDED(hr))
 {
  MessageBox(_T("加载操作失败"));
  return FALSE;
 }
 else if(*lppi==NULL)
 {
  MessageBox(_T("加载操作失败"));
  return FALSE;
 }
 return TRUE;
}
www.goodsgy.com

www.goodsgy.com

[1] [2]  下一页

在百度中搜索:C/C++:如何在程序中加载JPG图片?
在Google中搜索:C/C++:如何在程序中加载JPG图片?
在Yahoo中搜索:C/C++:如何在程序中加载JPG图片?

收藏到网摘:新浪VIVI 365key 我摘 POCO网摘 博采中心 YouNote 和讯网摘 天天收藏
[] [返回上一页] [打 印] [收 藏]

 相关文章    最新文章
· [图文] 用VSTS代码验证工具捕捉C/C++错误
· [组图] 采用c/c++编程实现盗取2005 Beta2...
· C/C++返回内部静态成员的陷阱
· C/C++ 程序设计员应聘常见面试试题深入剖..
· C/C++是程序员必须掌握的语言吗?
· 关于两代语言.C/C++,java/c#
· PHP中通过Web执行C/C++应用程序
· 使用XML/HTC/DHTML模拟标准Windows菜单
· 用PHP实现通过Web执行C/C++程序
· 关于B/S和C/S架构的探析
 
· SOA与数据挖掘在税收系统的应用
· 微软架构师谈编程语言发展之二
· 微软架构师谈编程语言发展之一
· 浅谈C++/CLI中引用类型的栈对象
· [图文] 资源DLL与语言选择菜单的实现
· [图文] 用VSTS代码验证工具捕捉C/C++错误
· C/C++:如何在程序中加载JPG图片?
· 嵌入式系统中文输入法的设计
· 内存调试技巧:C 语言最大难点揭秘
· C程序实现汉字内码与GB码

∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
站内搜索

精彩图文
  网站导航  
操作系统 办公软件 网络软件
Vista Windows2003 WindowsXP Windows2000/NT Windows9X/ME Linux 其他 Word Excel Powerpoint Outlook 金山系列 其他 网页浏览 上传下载 联络聊天 邮件工具 服务器软件 网络辅助
工具软件 媒体动画 网页制作
系统工具 媒体工具 压缩工具 图文处理 文件管理 其他 3DMAX Authorware Director Maya 视频处理 其他 Flash Dreamweaver FireWorks FrontPage LiveMotion Golive HTML/CSS 其它
网站开发 平面设计 程序设计
ASP JSP PHP CGI JavaScript VBScript XML/SOAP Web服务器 Photoshop PhotoImpact CorelDraw Illustrator Freehand 设计欣赏 其他 VB VC .NET C/C++ DELPHI JAVA

冀ICP备05019428号
Copyright © 2004-2008 电脑学习网 Inc.All rights reserved.
TEL:13832340607
QQ:39873155
E_Mail:goodsgy(#)hotmail.com   (把(#)替换成@)
MSN:goodsgy(#)hotmail.com   (把(#)替换成@)