mfc - 许多帧一次打开

时间:2012-10-24 09:49:36

标签: c++ mfc

我有一个C ++ mfc应用程序,我试图使用CMultiDocTemplate一次打开许多文档。 我发现只要我为第157个文档调用InitialUpdateFrame,应用程序就会崩溃。 谁能告诉我这个限制在哪里? 非常感谢!

1 个答案:

答案 0 :(得分:3)

最可能的原因 - 您达到了Windows USER或GDI对象限制。默认情况下,进程无法创建超过10000个USER和10000个GDI对象。如果您的文档视图包含许多控件/图形对象,则很容易超出限制。 10000/157 = 63。

因此,如果您的文档视图创建了63个或更多USER objects(窗口,图标,游标等)或GDI objects(位图,笔,画笔,字体等),MFC将抛出CResourceException异常如果你没有明确处理它,应用程序将因未处理的异常而中止。

检查这是否是您问题的真正根本原因非常容易。打开任务管理器,在菜单Processes检查View->Select columns...USER Objects中选择GDI Objects标签。运行您的应用程序,查看应用程序流程消耗的对象数。

有关详细信息,请参阅此优秀文章:Pushing the Limits of Windows: USER and GDI Objects

相关问题