Objets GDI

Les objets GDI ne prennent en charge qu’un seul descripteur par objet. Les handles vers les objets GDI sont privés pour un processus. Autrement dit, seul le processus qui a créé l’objet GDI peut utiliser le descripteur d’objet.

Il existe une limite théorique de 65 536 descripteurs GDI par session. Toutefois, le nombre maximal de descripteurs GDI pouvant être ouverts par session est généralement plus faible, car il est affecté par la mémoire disponible.

Windows 2000 : Il existe une limite de 16 384 descripteurs GDI par session.

Il y a également une limite par processus par défaut des descripteurs GDI. Pour modifier cette limite, définissez la valeur de Registre suivante :

HKEY _ logiciel de l' _ ordinateur LOCAL \ \ Microsoft \ Windows NT \ CurrentVersion \ Windows \ GDIProcessHandleQuota

Cette valeur peut être définie sur un nombre compris entre 256 et 65 536.

Windows 2000 : Cette valeur peut être définie sur un nombre compris entre 256 et 16 384.

Gestion des objets GDI

Le tableau suivant répertorie les objets GDI, ainsi que les fonctions de création et de destruction de chaque objet. Les fonctions Creator créent l’objet et un handle d’objet, ou simplement retournent simplement le handle d’objet existant. Les fonctions Destroy suppriment l’objet de la mémoire, ce qui invalide le descripteur d’objet.

Objet GDI Creator, fonction Fonction Destroy
Bitmap CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, CreateDIBitmap, CreateDIBSection, CreateDiscardableBitmap DeleteObject
Brush CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush DeleteObject
DC CreateDC DeleteDC, ReleaseDC
Métafichier amélioré CreateEnhMetaFile DeleteEnhMetaFile
Enhanced-Metafile DC CreateEnhMetaFile CloseEnhMetaFile
Police CreateFont, CreateFontIndirect DeleteObject
Mémoire DC CreateCompatibleDC DeleteDC
Métafichiers CreateMetaFile DeleteMetaFile
DC de métafichier CreateMetaFile CloseMetaFile
Palette CreatePalette DeleteObject
Stylet et stylet étendu CreatePen, CreatePenIndirect, ExtCreatePen DeleteObject
Région CombineRgn, CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreatePolyPolygonRgn, CreateRectRgn, CreateRectRgnIndirect, CreateRoundRectRgn, ExtCreateRegion, PathToRegion DeleteObject