Выделение ресурсов GDI

В этой статье объясняется, как выделять и освобождать объекты интерфейса графических устройств (GDI) Windows, необходимые для печати.

Примечание.

Дополнительные сведения см. в документации по пакету SDK GDI+.

Предположим, что вам требуется использовать определенные шрифты, перья или другие объекты GDI для печати, но не для отображения на экране. Из-за необходимого им объема памяти неэффективно выделить эти объекты при запуске приложения. Если приложение не печатает документ, эта память может потребоваться для других целей. Лучше выделить их, когда печать начинается, и затем удалите их.

Чтобы выделить эти объекты GDI, переопределите функцию-член OnBeginPrinting . Эта функция хорошо подходит для этой цели по двум причинам: платформа вызывает эту функцию один раз в начале каждого задания печати и, в отличие от OnPreparePrinting, эта функция имеет доступ к объекту CDC , представляющего драйвер устройства принтера. Эти объекты можно хранить во время задания печати, определяя переменные-члены в классе представления, указывающие на объекты GDI (например, CFont * элементы и т. д.).

Чтобы использовать созданные объекты GDI, выберите их в контексте устройства принтера в функции-члене OnPrint . Если вам нужны различные объекты GDI для разных страниц документа, можно проверить m_nCurPage член структуры CPrintInfo и выбрать объект GDI соответствующим образом. Если вам требуется объект GDI для нескольких последовательных страниц, в Windows необходимо выбирать его в контексте устройства при каждом вызове OnPrint.

Чтобы освободить эти объекты GDI, переопределите функцию-член OnEndPrinting . Платформа вызывает эту функцию в конце каждого задания печати, что дает вам возможность освободить объекты GDI для печати перед возвратом приложения к другим задачам.

См. также

Печать
Печать по умолчанию