【发布时间】:2013-01-02 15:35:14
【问题描述】:
如果我使用 CreateFont() 创建字体(作为非静态变量)并使用 SelectObject 在函数中使用它,那么在退出该函数之前,我必须选择前一个对象并使用 DeleteObject 删除字体。
但是如果我声明一个全局变量HFONT gFont = CreateFont(...),那么在WM_DESTROY消息中,我应该调用DeleteObject来删除字体吗?
同样在这种情况下,如果我在函数中使用hOldFont = SelectObject(memDC, gFont);,我应该在退出该函数之前调用SelectObject(memDC, hOldFont);吗?在我看来,对于 Bitmap,我们应该这样做清理,但我不知道这是否适用于其他 GDI 对象。
【问题讨论】:
-
是的。当您知道应该恢复设备上下文时故意不恢复是非常不明智的。这是未定义的行为,没有记录的结果,使用后果自负。
-
谢谢。而对于DeleteObject,你有什么意见吗?
-
当您不再需要该字体时将其删除。
标签: winapi fonts bitmap gdi+ gdi