如何处理GDI资源

时间:2010-11-05 13:26:10

标签: winapi mfc gdi

有没有人知道关于GDI资源处理的好文档/文章?

我需要在可能具有不同生命周期的类之间共享一些资源,如图标和位图,我想了解我应该如何解决这个问题。

对于Mutexes和其他内核对象,有一个DuplicateHandle函数,但是GDI让我感到困惑。此外,CBitmap通过const运算符HBITMAP返回HBITMAP的方式,有点可怕。

我想避免在每次重绘时创建本地位图,所以一些资源缓存会很好,但是,我不确定我是否可以开始创建和加载C #####资源而主消息泵没有开始跑了。

似乎我使用了错误的关键字,因为我找不到任何好的,但可管理的简短文档。

1 个答案:

答案 0 :(得分:1)

没有这样的文档,这一切都非常简单。决定何时调用DeleteObject()完全取决于您。并决定如何平衡程序的资源使用情况,以便在需要时动态创建和销毁对象。只有大的位图真的值得留下来。钢笔和刷子非常便宜,你可以在飞行中创建和销毁它们。字体是一个极端情况,通常只为程序的实时缓存,因为你需要的很少。

有很多方法可以管理缓存,shared_ptr<>例如,在C ++中提供标准引用计数模式。但是将引用保留为窗口包装类的成员是非常典型的。在多个窗口中使用相同的位图并不常见。因人而异。

创建GDI对象不需要消息循环。