Поделиться через


Объекты GDI

Объекты GDI поддерживают только один дескриптор для каждого объекта. Дескриптора объектов GDI являются частными для процесса. То есть только процесс, создавший объект GDI, может использовать дескриптор объекта.

Существует теоретический предел в 65 536 дескрипторов GDI на сеанс. Однако максимальное количество дескрипторов GDI, которые можно открыть на сеанс, обычно меньше, так как на это влияет доступная память.

Windows 2000: Существует ограничение в 16 384 дескриптора GDI на сеанс.

Существует также ограничение по умолчанию для дескрипторов GDI для каждого процесса. Чтобы изменить это ограничение, задайте следующее значение реестра:

HKEY_LOCAL_MACHINE\ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ\Microsoft\\ Windows NT CurrentVersion\Windows\GDIProcessHandleQuota

Для этого значения можно задать число в диапазоне от 256 до 65 536.

Windows 2000: Для этого значения можно задать число от 256 до 16 384.

Управление объектами GDI

В следующей таблице перечислены объекты GDI, а также функции создателя и разрушителя каждого объекта. Функции создателя либо создают объект и дескриптор объекта, либо просто возвращают существующий дескриптор объекта. Функции разрушителя удаляют объект из памяти, что делает дескриптор объекта недействительным.

Объект GDI Функция Creator Функция разрушителя
Bitmap CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, CreateDIBitmap, CreateDIBSection, CreateDiscardableBitmap DeleteObject
Brush CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush DeleteObject
DC CreateDC DeleteDC, ReleaseDC
Расширенный метафайл CreateEnhMetaFile DeleteEnhMetaFile
Контроллер домена с расширенным метафайлом CreateEnhMetaFile CloseEnhMetaFile
Шрифт CreateFont, CreateFontIndirect DeleteObject
Память контроллера домена CreateCompatibleDC DeleteDC
Метафайл CreateMetaFile DeleteMetaFile
Метафайл контроллера домена CreateMetaFile CloseMetaFile
Палитра CreatePalette DeleteObject
Перо и расширенное перо CreatePen, CreatePenIndirect, ExtCreatePen DeleteObject
Регион CombineRgn, CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreatePolyGonRgn, CreateRectRgn, CreateRectRgnIndirect, CreateRoundRectRectRgn, ExtCreateRegion, PathToRegion DeleteObject