2015-11-03 110 views
-1

我想了解如何正确释放GDI资源,这是我认为这是阅读许多GDI教程之后完成:如何正确释放GDI资源?

比方说,我已经创建了一个内存DC,以及创建和选择许多GDI对象(HPENHBRUSH,HBITMAP等)。现在释放GDI资源我会做到以下几点:

  1. 所有旧的GDI对象的选择到内存DC(因此 选择了所有新创建的GDI对象)。
  2. 删除新创建的GDI对象。
  3. 删除内存DC。

请注意,第二步和第三步可以按相反顺序执行。这是内存DC被删除的GDI对象。

如果我正在使用正常的DC(我使用的是GetDC()BeginPaint()),我将替换删除DC并释放它。

我得到这个权利,还是我错过了什么?

回答

1
  1. 所有旧的GDI对象的选择到存储器DC(并因此 选择了所有的新创建的GDI对象的)。
  2. 删除新创建的GDI对象。
  3. 删除内存DC。

请注意,第二步和第三步可以按相反顺序执行。这是内存DC被删除的GDI对象。

我有这个对吗?

是的,你做到了。

而且如果我有一个正常的直流工作(即我使用GetDC()BeginPaint()),我将取代删除DC只释放它。

好,GetDC将与ReleaseDC匹配,BeginPaint将与EndPaint匹配。至于GetDC,注意从documentation如下:

有一个共同的DC画后,ReleaseDC函数必须调用来释放DC。阶级和私人区议会不必被释放。