Получение описателя контекста устройства


В простейшем случае описатель контекста (контекст) может быть получен с помощью функций:

HDC GetDC(HWND hwnd);

HDC GetWindowDC(HWND hwnd);

HDC GetDCEx(HWND hwnd, HRGN hrgnClip, DWORD dwFlags);

Функции GetDC и GetDCEx возвращают контекст клиентской области окна (без заголовка, рамки и пр.). Контекст всего окна может быть получен с помощью функций GetWindowDC или GetDCEx с соответствующим флагом:

DCX_WINDOW – дать контекст всего окна, включая системную область;

DCX_PARENTCLIP – использовать видимую часть родительского окна;

DCX_CLIPCHILDREN – исключить подчиненные окна;

DCX_NORESETATTRS – не сбрасывать состояние контекста при его освобождении и т.д.

При этом поведение функций зависит также от некоторых установок стиля оконного класса:

CS_CLASSDC – использовать единственный разделяемый контекст для всех окон данного класса;

CS_OWNDC – использовать собственный контекст для каждого экземпляра окна;

CS_PARENTDC – использовать контекст и регион отсечения родительского окна и т.д.

Кроме получения контекста существующего окна можно создавать новые контексты, связанные с определенным устройством.

Функции

HDC CreateDC(LPCTSTR lpszDriver, LPCTSTR lpszDevice,

LPCTSTR lpszOutput, CONST DEVMODE* lpInitData );

HDC CreateCompatibleDC(HDC hPrimDC);

создают новый контекст, связанный с указанным устройством (CreateDC) или совместимым с известным контекстом (CreateCompatibleDC). Во втором случае если «образцовый» контекст не задан, то создается контекст в памяти (memory context), совместимый с текущими установками экрана. Возвраща­е­мое значение – описатель контекста или NULL – в случае ошибки. Параметры:

lpszDriver – может быть DISPLAY для контекстов, связанных с экраном, и NULL для всех других устройств;

lpszDevice – логическое имя устройства в системе;

lpszOutput – имя устройства в файловой системе (в Win32 – NULL);

lpInitData – указатель на структуру DEVMODE с инициирующими данными для устройства, NULL – настройки по умолчанию;

hPrimDC – «образцовый» контекст, с которым будет совместим вновь создаваемый, если NULL – экран с текущими настройками.

По окончании работы с контекстом он должен быть освобожден (закрыт). Для контекстов, полученных с помощью функций Get..., используется функция

int ReleaseDC(HWND hwnd, HDC hdc);

которая освобождает «общие» и оконные контексты.

Для контекстов, созданных с помощью функций Create..., используется функция

int DeleteDC(HDC hdc);

возвращает 1 – при успешном завершении, 0 – при ошибке.

Многие характеристики действующего контекста могут быть получены с помощью функции GetDeviceCaps(), принимающей в качестве аргумента описатель контекста и индекс (номер) интересующего параметра (описываются системными константами) и возвращающей значение этого параметра.

 



Дата добавления: 2017-10-04; просмотров: 1043;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.