Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Четыре способа создания и удаления контекста графических устройств



Существуют 4 способа получения и удаления контекста устройства, каждый из которых определяется парой под программ. 1. Для перерисовки части рабочей области окна используется функция BeginPaint (ByValhwndAsLong, lpPaintAsPAINTSTRUCT)AsLong Эта функция возвращает дескриптор экранного контекста рабочей области, требующей обновления в ответ на сообщение с константой WM_PAINT. Размеры области определяются ОС Windows в структуре PAINTSTRUCT. Сообщение с константой WM_PAINT должно обрабатываться оконной функцией приложения. Удаление контекста, созданного функцией BeginPaint, осуществляется процедурой EndPaint (ByValhwndAsLong, lpPaintAsPAINTSTRUCT)AsLong, завершающей операцию по отображению в окне hWnd графической информации. Сообщение c константой WM_PAINT посылается ядром Windows, если необходимо перерисовать часть(или всю) рабочей области окна. Например, когда окно было частично перекрыто другим окном или часть окна потеряла свое прежнее содержимое и требует обновления. В этом случае ядро определяет ту область, которая подлежит перерисовке, и посылает программе ее координаты в структуре PAINTSTRUCT и сообщение с константой WM_PAINT, в ответ на которое прикладная программа должна сама восстановить содержимое окна. Первый раз прикладная программа получает это сообщение при вызове функции UpdateWindows. Оно также посылается и в случае изменения размеров окна, если стиль класса окна указан с атрибутами CS_HREDRAW иCS_VREDRAW. Попробуйте удалить функцию UpdateWindows из программы, основанной на обработке сообщений, и Вы уже не сможете работать с константами сообщений WM_RBUTTONDOWN, WM_CHAR, WM_KEYDOWN. 2. Для перерисовки всей рабочей области окна используется функция GetDC (ByValhwndAsLong) AsLong Эта функция возвращает дескриптор контекста этой области. Удаление контекста, созданного функцией GetDC, осуществляется другой функцией ReleaseDC(ByValhwndAsLong, ByVal hdc As Long) As Long, которая освобождает контекст указанного окна и делает его обще доступным.

3.Для перерисовки всего окна, включая области, занятые заголовком, рамкой и меню, используется функция GetWindowDC(ByValhwndAsLong) AsLong Функции GetWindowDC в программе должна соответствовать функция ReleaseDC.

4.Для перерисовки всего экрана или для создания дескриптора контекста других графических устройств(принтера, плоттера) используется функция

CreateDC (ByVallpDriverNameAsString, ByVallpDeviceNameAsString, ByVallpOutputAsString,lpInitDataAsDEVMODE) AsLong,гдеlpDriverNameиlpDeviceName—имя драйвера и устройства;

lpOutPut-имяпорта ввода-вывода;

lpInitData-ссылка на

структуру типа DEVMODE, содержащую информацию о начальных установках принтера(плоттера). Функции CreateDC в программе должна соответствовать функция DeleteDC.






Дата публикования: 2014-12-28; Прочитано: 226 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...