关于SHLoadImageFile无法载入图片的问题

本文探讨了在PDA设备上使用SHLoadImageFile()函数加载jpg图片时遇到的问题及解决方案,包括系统支持、句柄释放及图片分辨率的影响。


      由于近期在做PDA照相和图片查看的功能,所以需要用到SHLoadImageFile()函数来实现jpg文件的读取,开始测试时可以读取jpg文件,但是程序打开后只能连续读取几次后就不能读取了,必须关闭重启,后来直接就无法读取,纠结了一下午,查找各种原因,最后经过查找资料和自己摸索发现造成无法读取的原因主要有三个:
     1、系统本身不支持SHLoadImageFile()函数,因为MSDN上说必须满足一下条件,不过现在基本上都是WM5、6了,所以一般都会支持

                        PocketPC: Windows Mobile 2003 and later.
                        OS Versions: Windows CE .NET 4.0 and later.
                         Header: Declared in Aygshell.h.
                         Library: Use Aygshell.lib.

   2、由于没有及时释放句柄,,(这也是我开始几次可以成功读取后来无法读取的原因);

             HBITMAP hBmpNew=SHLoadImageFile(L"MyDocuments\\Photo\\test.jpg");中的 hBmpNew再使用完之后必                须DeleteObject(hBmpNew);,释放句柄,

   3、图片拍摄时设置的分辨率太高,(这个是自己发现的)

           如果图片的分辨率是设置的太高,拍摄的图片当SHLoadImageFile()时,返回值始终为NULL,这个就是整             整纠结了我一下午的问题,最后发现了

      如果摄像头得分辨率设置成320*240、640*480、1280*960、1600*1200一般都是可以的,但是如果设置的再高的话就会出现上面的问题。

 

花费了一下午,问题解决了,在这里总结一下,希望对大家以后有用。


                                                   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值