我正在努力了解如何正确释放GDI资源,这是我认为在阅读了许多GDI教程之后的工作方式:
假设我创建了一个内存DC,并创建并选择了许多GDI对象(HPEN
,HBRUSH
,HBITMAP
等)。现在要释放GDI资源,我会做以下事情:
请注意,第二步和第三步可以按相反顺序执行。也就是说,为GDI对象删除了内存DC。
如果我正在使用普通DC(我使用GetDC()
或BeginPaint()
),我会替换删除DC而只是释放它。
我做对了,还是我错过了什么?
答案 0 :(得分:1)
- 将所有旧的GDI对象选择到内存DC中(因此 选择所有新创建的GDI对象。)
- 删除新创建的GDI对象。
- 删除内存DC。
醇>请注意,第二步和第三步可以按相反顺序执行。也就是说,为GDI对象删除了内存DC。
我做对了吗?
是的,你做到了。
如果我正在使用普通DC(我使用
GetDC()
或BeginPaint()
),我会替换删除DC而只是释放它。
好吧,GetDC
将与ReleaseDC
匹配,BeginPaint
将与EndPaint
匹配。至于GetDC
,请注意documentation中的以下内容:
使用公共DC绘制后,必须调用ReleaseDC函数以释放DC。不必发布类和私有DC。