Objets GDI

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

Il existe une limite théorique de 65 536 handles GDI par session. Toutefois, le nombre maximal de handles GDI qui peuvent être ouverts par session est généralement inférieur, car il est affecté par la mémoire disponible.

Windows 2000 : il existe une limite de 16 384 handles GDI par session.

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

HKEY_LOCAL_MACHINE\LOGICIEL\Microsoft\WindowsNTCurrentVersion\\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 créateur et destructeur de chaque objet. Les fonctions de créateur créent l’objet et un handle d’objet ou retournent simplement le handle d’objet existant. Les fonctions de destructeur suppriment l’objet de la mémoire, ce qui invalide le handle d’objet.

Objet GDI Creator, fonction Fonction destroyer
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
Contrôleur de domaine de métafichier amélioré CreateEnhMetaFile CloseEnhMetaFile
Police CreateFont, CreateFontIndirect DeleteObject
Contrôleur de domaine mémoire CreateCompatibleDC DeleteDC
Metafile CreateMetaFile DeleteMetaFile
Métafichier DC 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