Objetos GDI
Os objetos GDI dão suporte apenas a um identificador por objeto. Identificadores para objetos GDI são privados para um processo. Ou seja, somente o processo que criou o objeto GDI pode usar o identificador de objeto.
Há um limite teórico de 65.536 identificadores GDI por sessão. No entanto, o número máximo de identificadores GDI que podem ser abertos por sessão geralmente é menor, pois é afetado pela memória disponível.
Windows 2000: Há um limite de 16.384 identificadores GDI por sessão.
Também há um limite padrão por processo de identificadores GDI. Para alterar esse limite, defina o seguinte valor do Registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\\ Windows NT CurrentVersion\Windows\GDIProcessHandleQuota
Esse valor pode ser definido como um número entre 256 e 65.536.
Windows 2000: Esse valor pode ser definido como um número entre 256 e 16.384.
Gerenciando objetos GDI
A tabela a seguir lista os objetos GDI, juntamente com as funções de criador e destruidor de cada objeto. As funções do criador criam o objeto e um identificador de objeto ou simplesmente retornam o identificador de objeto existente. As funções do destruidor removem o objeto da memória, o que invalida o identificador do objeto.
Objeto GDI | Função Criador | Função Destroyer |
---|---|---|
Bitmap | CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, CreateDIBitmap, CreateDIBSection, CreateDiscardableBitmap | DeleteObject |
Pincel | CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush | DeleteObject |
DC | Createdc | DeleteDC, ReleaseDC |
Metafile aprimorado | CreateEnhMetaFile | Deleteenhmetafile |
DC de meta-arquivo aprimorado | CreateEnhMetaFile | CloseEnhMetaFile |
Fonte | CreateFont, CreateFontIndirect | DeleteObject |
MEMÓRIA DC | Createcompatibledc | Deletedc |
Metarquivo | CreateMetaFile | Deletemetafile |
DC de metarquivo | CreateMetaFile | CloseMetaFile |
Paleta | Createpalette | DeleteObject |
Caneta e caneta estendida | CreatePen, CreatePenIndirect, ExtCreatePen | DeleteObject |
Região | CombineRgn, CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreatePolyPolygonRgn, CreateRectRgn, CreateRectRgnIndirect, CreateRoundRectRgn, ExtCreateRegion, PathToRegion | DeleteObject |