posts - 126,  comments - 73,  trackbacks - 0

因要做一个小的登陆客户端,所用图片格式为png.但较少,所以想直接放到资源中.

碰到的第一个问题是.net2003中加载png图片到资源中总是不成功.试了下发现jpg也不行,jpg图片会提示"不是正确的JPEG格式",后来用vc6.0打开资源文件加载成功的.vs2003中原因还未找到,有知道的朋友告知一声.

而后的问题就是如何把资源中的二进制的图片数据显示出来.   gg之.整理代码如下:



 1    Image *pRetImg = NULL;
 2    
 3    HGLOBAL        hGlobal = NULL;
 4    HRSRC        hSource = NULL;
 5    LPVOID        lpVoid  = NULL;
 6    int            nSize   = 0;
 7
 8    hSource = FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_BACK_PNG), "PNG");
 9
10    if(hSource == NULL)
11        return pRetImg;
12
13    hGlobal = LoadResource(AfxGetResourceHandle(), hSource);
14    if(hGlobal == NULL)
15    {    
16        FreeResource(hGlobal);         return pRetImg;        
17    }

18
19    lpVoid = LockResource(hGlobal);
20    if(lpVoid == NULL)
21        goto Exit;
22
23    nSize = (UINT)SizeofResource(AfxGetResourceHandle(), hSource);
24
25    HGLOBAL hGlobal2 = GlobalAlloc(GMEM_MOVEABLE, nSize);
26    if(hGlobal2 == NULL)
27    {
28        goto Exit;
29    }

30
31    void* pData = GlobalLock(hGlobal2);
32    memcpy(pData, (void *)hGlobal, nSize);
33    GlobalUnlock(hGlobal2);
34
35    IStream* pStream = NULL;
36
37    if(CreateStreamOnHGlobal(hGlobal2, TRUE, &pStream) == S_OK)
38    {
39
40        pRetImg = Image::FromStream(pStream, FALSE);
41        pStream->Release();
42    }

43
44    FreeResource(hGlobal2); 
45
46
47Exit:
48    UnlockResource(hGlobal);    FreeResource(hGlobal); 
49    return pRetImg;
50





 

posted on 2008-05-29 20:37 我风 阅读(11153) 评论(2)  编辑 收藏 引用

FeedBack:
# re: vc资源中加载png图片以及显示
2008-05-30 16:03 | 亨德列克
。。很绕,建议把图片单独弄出来,别作为资源和EXE在一起,然后用Image::FromFile Load进来……  回复  更多评论
  
# re: vc资源中加载png图片以及显示
2008-05-30 17:16 | 我风
如果图片单独的话是很简单.大的项目肯定要把图片另外存放,但一些小工具还是扔资源里好.@亨德列克
  回复  更多评论
  

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2022年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿(12)

随笔分类

随笔档案

文章档案

相册

收藏夹

C++

MyFavorite

搜索

  •  

积分与排名

  • 积分 - 305510
  • 排名 - 72

最新评论

阅读排行榜

评论排行榜