MFC运行一段时间以后出现A required resource is unavailable

来源:百度知道 编辑:UC知道 时间:2024/06/17 11:59:18
MFC写的程序,用CListCtrl控件显示ICON,1000张显示出来没问题。
然后
CBrush brush(RGB(0,0,0));
再pDC->FillRect(&rect, &brush);
其中,rect是已知区域。

调试时发现,在CBrush brush(RGB(0,0,0))一句运行后,系统抛出了CResourceException异常,catch以后才运行到pDC一句。

如果ICON显示只有几百张,没有出现过此问题。

请问,这是为什么引起的?怎么样能够解决?
To:eelninth
我觉得不是。
异常是在创建CBrush的时候抛出的,这个时候没有调用任何其他需要释放的资源。
至于pDC,是外部传入的,自然是在外面释放,而不是在这儿。
况且抛出异常的也不是pDC。

To:FIMLight,widebright
当然单步过,请仔细看一下描述。

To:cocoj521
什么情况下系统资源耗尽?耗尽的是什么类型的系统资源?跟内存又是什么关系?

To:凌烟阁武士,jdzfjfhnui
上下文代码太多了,而且已经单步得到了结果,还有什么需要代码支持呢?

无法判断, 你提供代码太少了. 显示1000张循环的代码, 已经 创建CBrush部分上下文的代码.

你都说了, 不知道什么原因. 提供这几行代码是以你主观来判断可能出现在这几行代码, 事实上这几行代码无法判断什么.

肯定是有资源泄漏, 那么我怀疑你所谓的循环显示1000张图片的那一块地方有泄漏或者其他你自己忽略的地方.

系统资源耗尽....

完整代码

不是还有一个选择画刷的步骤的吗

你能不能把那个bursh放在外面建立,不要在循环中。
这样试试看

我想应该是内存耗尽 如果你的是WinNT以前的系统 那么这种可能就更大了
在2000以上的系统这种问题应该很少出现 因为有无限虚拟内存 最多会变得很卡
因为根据你说的 如果显示少量图片还行 可是上千就不行了 恐怕是内存的问题啊