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


Объекты GDI

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

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

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

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

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\GDIProcessHandleQuota

Это значение может иметь значение от 256 до 65 536.

Windows 2000: это значение можно задать в диапазоне от 256 до 16 384.

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

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

Объект GDI Функция Creator Функция разрушителя
Точечный рисунок CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, CreateDIBitmap, CreateDIBSection, CreateDiscardableBitmap DeleteObject
Щётка CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush DeleteObject
Постоянный ток 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, CreatePolyPolygonRgn, CreateRectRgn, CreateRectRgnIndirect, CreateRoundRectRgn, ExtCreateRegion, PathToRegion DeleteObject