Objets GDI

Les objets GDI ne prennent en charge qu’un seul handle par objet. Les descripteurs vers les objets GDI sont privés à 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 pouvant ê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 défaut par processus de handles GDI. Pour modifier cette limite, définissez la valeur de Registre suivante :

HKEY_LOCAL_MACHINE\LOGICIEL\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éateur et de destructeur de chaque objet. Les fonctions du 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 Destroyer, fonction
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
Contrôleur de domaine de métafichier CreateMetaFile CloseMetaFile
Palette CreatePalette DeleteObject
Stylet et stylet étendu CreatePen, CreatePenIndirect, ExtCreatePen DeleteObject
Région CombineRgn, CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreatePolygonRgn, CreateRectRgn, CreateRectRgnIndirect, CreateRoundRectRgn, ExtCreateRegion, PathToRegion DeleteObject