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 |