写的MFC程序运行50分钟后不会刷新图像了

chenchengnet 2010-07-16 10:32:04
各位大侠,

我写了一个MFC程序,在BUtton按下后,启动一个线程,这个线程不断从数组接收图像数据,形成TDIBitmap。而后在该线程中调用StretchDIBits()函数将TDIBitmap显示在ImageBox上。

线程正常运行50分钟后,就不再刷新新拍摄到的图片了,这是为什么??数组当中有不断更新的新的图片数据的。这时将显示窗口关闭,线程还在正常运行,重新打开显示窗口后,新的图像数据就显示在屏幕上了。


那位大仙知道这是什么原因么??
...全文
85 点赞 收藏 14
写回复
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueMap 2010-07-18
[Quote=引用 10 楼 chenchengnet 的回复:]

不是资源没有释放,内存也没有增加啊。就是运行了50分钟后,不刷新图了。
[/Quote]
注意CDC也是资源,也是有数量限制的,用完要释放的。。。getdc后要releasedc,看看你每次都释放了没有。。。
回复
BlueMap 2010-07-18
1、可能是算法设计时有不足的地方,导致设备环境(CDC)变了,导致画图没画对地方,或根本没有画。
2、你确定线程没有“睡觉”?你没有停止或让他sleep时间变长?
回复
chenchengnet 2010-07-18
不是资源没有释放,内存也没有增加啊。就是运行了50分钟后,不刷新图了。
回复
chenchengnet 2010-07-18
[Quote=引用 12 楼 bluemap 的回复:]
引用 10 楼 chenchengnet 的回复:

不是资源没有释放,内存也没有增加啊。就是运行了50分钟后,不刷新图了。

注意CDC也是资源,也是有数量限制的,用完要释放的。。。getdc后要releasedc,看看你每次都释放了没有。。。
[/Quote]

是的,是的。谢谢了
回复
fzaifei 2010-07-18
到Windows任务管理器里面看看 内存使用、句柄数、GDI对象这些,看看哪个在程序运行期间不停增加。
回复
雪域迷影 2010-07-17


ccccccccccccc
回复
wltg2001 2010-07-17
检查一下是不是GDI资源没有释放
回复
liaolingfen4 2010-07-17
同上。。。用了要记得释放。。。申请了也是。。

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

http://feiyun0112.cnblogs.com/
回复
可能是因为没有释放资源。
回复
jingyuge 2010-07-17
估计是忘释放了,资源耗光了
回复
lyvvv 2010-07-16


CBrush brush1; // Must initialize!
brush1.CreateSolidBrush(RGB(0,0,255)); // Blue brush.

CBrush* pTempBrush = (CBrush*)pDC->SelectObject(brush1);

// 你的代码

pDC->SelectObject(&OrigBrush); //一定要加上这句,CPen CBrush CFont...都需要添加

回复
fishion 2010-07-16
不要总喜欢在线程里绘图吧
回复
ameyume 2010-07-16
不懂,帮顶。
瞎猜一下:是不是图像太多了,导致只显示最后一张不刷新了,还是线程挂起了?
回复
chenchengnet 2010-07-16
小弟在这里先谢过了
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告