2010-11-05 176 views
0

有谁知道关于GDI资源处理的好文档/文章吗?如何处理GDI资源

我需要的是可以有不同的生命周期类之间共享像图标和位图的一些资源,我想知道我应该怎么解决这个问题。

互斥和其他内核对象是有DuplicateHandle函数,但是GDI是混淆了我一点点。另外,CBitmap通过常量运算符HBITMAP返回HBITMAP的方式,就像这样,有点吓人。

我想避免在每次重绘时创建本地位图,所以某些资源缓存会很好,但是我也不确定我可以开始创建和加载C#####资源,而主消息泵并不存在, t开始运行。

看来我使用错误的关键词,因为我无法找到任何好的,但可管理简短的文档。

回答

1

有没有这样的文件,它是所有非常简单。完全取决于您决定何时调用DeleteObject()。并决定如何平衡程序的资源使用情况,并在需要时动态创建和销毁对象。只有较大的位图才值得保留。钢笔和画笔非常便宜,您可以即时创建并摧毁它们。字体是一个角落的情况,通常只是为了节目的直播而缓存,因为你需要这么少的字体。

有大量的在C++中的方式来管理高速缓存,一个shared_ptr <>提供了用于例如标准参考计数模式。但是,将引用保留为您的窗口包装类的成员是非常典型的。在多个窗口中使用相同的位图并不常见。因人而异。

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