22. Последовательность действий приложения при формировании рисунка (Ответы на вопросы билетов)
Описание файла
Файл "22. Последовательность действий приложения при формировании рисунка" внутри архива находится в следующих папках: Ответы на вопросы билетов, WinAPI - Ответы на вопросы билетов. PDF-файл из архива "Ответы на вопросы билетов", который расположен в категории "". Всё это находится в предмете "api windows" из 6 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "к экзамену/зачёту", в предмете "api windows" в общих файлах.
Просмотр PDF-файла онлайн
Текст из PDF
1.Последовательность действий приложения при формировании рисункаКак правило, приложения выполняют всю работу по рисованию во время обработки сообщенияWM_PAINT, хотя часто требуется рисовать и во время обработки других сообщений.В любом случае приложение должно придерживаться следующей последовательности действийпри формировании рисунка:1. Получение или создание контекста отображения;2. Установка необходимых атрибутов в контексте отображения;3. Выполнение операций рисования;4. Освобождение или удаление контекста отображения.Последнее действие (освобождение или удаление контекста отображения) должно быть обязательновыполнено.
Самый простой способ полностью нарушить работоспособность Windows - забыть освободитьполученный контекст отображения или удалить созданный контекст отображения или устройства.Так как контекст отображения - критический ресурс, его необходимо освобождать сразу, как только внем отпадет необходимость. Операционная система Windows выполняет кеширование обычного контекстаотображения (есть и необычные контексты отображения, но об этом позже), причем кешируются толькопять контекстов. Если Windows не может удовлетворить запрос какого-либо приложения на выделениеконтекста отображения, вся операционная система окажется в критическом состоянии, единственнымвыходом из которого будет полный перезапуск Windows.Таким образом, при обработке сообщения WM_PAINT (при формировании рисунка) происходитследующая последовательность действий:PAINTSTRUCT ps;// Задаем пустую структуру, для послед.
использования при рисованииHDC hdc;// Указатель на структуру контекста отображения........case WM_PAINT:{// Получаем контекст отображенияhdc = BeginPaint(hwnd, &ps);// После получения контекста отображения можно вызывать функции GDITextOut(hdc, 0, 0, (LPSTR)"String", 6);..// Освобождаем контекст отображенияEndPaint(hwnd, &ps);break;}Функции BeginPaint и EndPaint можно использовать только внутри обработчика сообщения WM_PAINT.Если же приложению требуется рисовать во время обработки других сообщений, оно должно получитьконтекст отображения с помощью функции: HDC WINAPI GetDC(HWND hwnd);После завершения процедуры рисования перед выходом из обработчика сообщения следуетосвободить полученный контекст отображения, вызвав функцию ReleaseDC:int WINAPI ReleaseDC(HWND hwnd, HDC hdc);.