Приложение вызвало одну из функций работы с полосами прокрутки.
Клиентская область была полностью или частично закрыта другим окном или выпадающим меню, а теперь закрывающий объект исчез;
Изменились размеры или местоположение окна;
Использование сообщения WM_PAINT
Контекст для метафайла позволяет записывать команды GDI в файл, а затем проиграть такой файл на физическом устройстве вывода. Файл может находиться в памяти или на диске.
1) Для создания контекста метафайла используется функция CreateMetaFile:
HDC WINAPI CreateMetaFile(LPCSTR lpszFileName);Параметр lpszFileName указывает на строку, содержащую путь к имени файла, в который будут записаны команды GDI, или NULL. Если параметр равен NULL, то создается метафайл в оперативной памяти.
2) После выполнения рисования в контексте метафайла следует закрыть метафайл, вызвав функцию CloseMetaFile:
HMETAFILE WINAPI CloseMetaFile(HDC hdc);Функция закрывает метафайл для контекста hdc и возвращает идентификатор метафайла.
3) Если имеется идентификатор метафайла, то метафайл можно скопировать в обычный дисковый файл, с помощью функции CopyMetaFile:
|
|
Параметр hmf определяет метафайл, параметр lpszFileName содержит путь к имени файла, в который будет записан метафайл.
4) Можно проиграть метафайл в контексте отображения или контексте устройства, вызвав функцию PlayMetaFile:
BOOL WINAPI PlayMetaFile(HDC hdc, HMETAFILE hmf);5) При помощи функции DeleteMetaFile можно удалить метафайл:
BOOL WINAPI DeleteMetaFile(HMETAFILE hmf);При удалении метафайла освобождается оперативная память, занятая метафайлом. Если метафайл был создан как дисковый файл, функция DeleteMetaFile не удаляет его с диска.
6) Для того чтобы воспользоваться метафайлом, хранящимся в виде дискового файла, его нужно загрузить функцией GetMetaFile, указав в качестве параметра путь к соответствующему файлу:
HMETAFILE WINAPI GetMetaFile(LPCSTR lpszFileName); Для хранения метафайлов требуется значительно меньше места, чем для хранения растровых изображений. В то же время для отображения метафайлов требуется обычно больше времени, чем для вывода растровых изображений.Сообщение WM_PAINT система посылает окну во всех случаях, требующих перерисовки клиентской области окна, например при наступлении следующих событий:
Кроме того, приложение может само инициировать посылку сообщения WM_PAINT посредством вызова одной из функций InvalidateRect, InvalidateRgn или UpdateWindow.
Функция UpdateWindow посылает сообщение WM_PAINT непосредственно в оконную процедуру, минуя очередь сообщений приложения.
Операции по обмену блоками бит (b it b l ock t ransfer, BLT) или тернарные растровые операции (ternary raster operation) – механизм, осуществляющий передачу растровых изображений между различными контекстами устройств.
Основная идея растровых операций заключается в организации обмена данными между двумя контекстами устройств. В Windows-приложении можно осуществить передачу изображения: