Winapi 如何处理GDI资源

Winapi 如何处理GDI资源,winapi,mfc,gdi,Winapi,Mfc,Gdi,有人知道关于GDI资源处理的好文档/文章吗 我需要在具有不同生命周期的类之间共享一些资源,如图标和位图,我想了解应该如何解决这个问题 对于互斥对象和其他内核对象,有一个DuplicateHandle函数,但GDI让我有点困惑。此外,CBitmap通过常量操作符HBITMAP返回HBITMAP的方式,诸如此类,有点可怕 我希望避免在每次重画时都创建本地位图,因此一些资源缓存会很好,但我也不确定是否可以在主消息泵尚未启动时开始创建和加载C######资源 似乎我使用了错误的关键字,因为我找不到任何好

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

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

对于互斥对象和其他内核对象,有一个DuplicateHandle函数,但GDI让我有点困惑。此外,CBitmap通过常量操作符HBITMAP返回HBITMAP的方式,诸如此类,有点可怕

我希望避免在每次重画时都创建本地位图,因此一些资源缓存会很好,但我也不确定是否可以在主消息泵尚未启动时开始创建和加载C######资源


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

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

<> P>有很多方法来管理缓存,例如,C++中的SyrdYPTR提供了标准的引用计数模式。但将引用保留为窗口包装器类的成员是非常典型的。在多个窗口中使用同一位图并不常见。Ymmv

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