开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 9049|回复: 18
收起左侧

[易语言纯源码] 关于《使用GDI+在内存转换图像格式》的BUG

[复制链接]

结帖率:88% (46/52)
发表于 2014-7-30 10:31:30 | 显示全部楼层 |阅读模式   陕西省渭南市
分享源码
界面截图:
是否带模块: -
备注说明: -
http://bbs.125.la/thread-31530-1-1.html
http://bbs.eyuyan.com/read.php?tid=127301
《使用GDI+在内存转换图像格式》这是个很老的例子了.偶尔听到一些易友说有时候代码会出错。其实当时我修复过BUG,但当时已超过了可编辑帖子的时间,于是一直没有重新发布代码,后来时间久了甚至忘记修改过哪些地方了。
今天也有易友提到这个问题,于是我还是重新检查了一下代码。
貌似主要问题出在这一句:
CreateStreamOnHGlobal (hMem, 真, Stream)
MSDN有这么一段话

If the caller sets the fDeleteOnRelease parameter to FALSE,then the caller must also free the hGlobal after the final release. Ifthe caller sets the fDeleteOnRelease parameter to TRUE, the finalrelease will automatically free the hGlobal as shown in the followingexample code.
if(pData->fDeleteOnRelease)
{
    Verify(0==GlobalFree(pData->hGlobal));
}



然而,那份代码已经手动调用了GlobalFree来释放资源,那么那行代码的第二个参数应该设置为“”,也就是这样:
CreateStreamOnHGlobal (hMem, 假, Stream)

另外,根据MSDN对CreateStreamOnHGlobal第一个参数的说明,其中有这么一句“The handle must be allocated as movable and nondiscardable”,也就是说,GlobalAlloc应该使用GMEM_MOVEABLE和GMEM_NODISCARD常量。由于GMEM_NODISCARD已经过时所以被忽略了,那么应该只需要设置成GMEM_MOVEABLE就可以了。

下面附件是修复BUG后的代码
使用GDI 在内存转换图像格式_Fix_bug_@20140729.rar (4.94 KB, 下载次数: 140)

点评

热水哥YYDS   新疆维吾尔自治区乌鲁木齐市  发表于 2022-8-25 16:25

评分

参与人数 1精币 +2 收起 理由
SalHe + 2 看到涛哥了,加分

查看全部评分


发表于 2024-4-17 18:17:15 | 显示全部楼层   安徽省合肥市
6666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:40% (2/5)
发表于 2018-7-7 19:52:36 | 显示全部楼层   福建省福州市
不错,学习了
回复 支持 反对

使用道具 举报

发表于 2016-1-9 21:13:12 | 显示全部楼层   四川省德阳市
不太会用,先学习一下。
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2015-8-27 16:19:33 | 显示全部楼层   浙江省台州市
大神顶你
回复 支持 反对

使用道具 举报

结帖率:0% (0/3)
发表于 2015-7-29 20:49:14 | 显示全部楼层   山东省泰安市
激动的我不知道说什么好,感谢楼主的辛苦付出和共享精神,我的屏幕快照模块也快要完成了正好遇到一个输出文件过大的问题,完成了的话会共享出来的,快照效率自我感觉相当不错。
回复 支持 反对

使用道具 举报

发表于 2015-3-22 12:50:33 | 显示全部楼层   广东省河源市
感激不尽!!!
回复 支持 反对

使用道具 举报

结帖率:40% (31/78)
发表于 2015-2-19 19:46:11 | 显示全部楼层   四川省宜宾市
头像碉堡了!
回复 支持 反对

使用道具 举报

结帖率:60% (9/15)

签到天数: 1 天

发表于 2014-11-19 14:45:14 | 显示全部楼层   韩国
楼主叼炸天
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)
发表于 2014-9-2 23:57:44 | 显示全部楼层   浙江省温州市
好眼熟的头像
回复 支持 反对

使用道具 举报

结帖率:82% (18/22)
发表于 2014-8-26 12:19:53 | 显示全部楼层   河南省许昌市
支持下把.....
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表