Графика в Windows
1. Цель работы
Изучить графику в Windows.
Написать программу на 32-битном ассемблере, используя API-функции.
. Теория
графика программный
windows
В операционной
системе Windows реализована объектно-ориентированная идеология. Базовый объект
системы - окно, поведение которого определяется методом, называемым функцией
окна. Графический образ окна на экране дисплея - прямоугольная рабочая область.
Независимо от
своего типа любой объект Windows идентифицируется описателем или дескриптором (handle). Дескриптор - это
ссылка на объект. Все взаимоотношения программного кода с объектом
осуществляются только через его дескриптор.
Интерфейс
прикладного программирования (API - Application Programming Interface) представляет собой совокупность 32-битных функций (Win32 API), которые предназначены
для создания приложений (программ), работающих под управлением Microsoft Windows. Функции объявлены в
заголовочных файлах. Главный из них - файл windows.h, в котором содержатся ссылки на
другие заголовочные файлы.
В Win32 единицей
работы компьютера является поток - ход выполнения программы в рамках процесса
(в контексте процесса). Поток выполняет программный код, принадлежащий
процессу. Процесс - это экземпляр выполняемой программы (но не ход ее
выполнения). Он не является динамическим объектом и включает виртуальное
адресное пространство, код и данные, файлы, синхронизирующие объекты,
динамические библиотеки.
Каждое приложение
создает, по меньшей мере, один первичный поток, но может создать и много
потоков.
Любое приложение Windows представлено на экране
дисплея как минимум одним окном с набором стандартных элементов управления.
Различают следующие типы окон:
·
перекрывающие (overlapped
window);
·
всплывающие (pop-up
window);
·
дочерние (Child window);
·
слоистые (1ayered window) - особые окна, которые позволяют улучшить визуальный эффект,
включая прозрачность.
Перекрывающие окна
создаются функцией CreateWindowEx() со стилем WS_OVERLAPPEDWINDOW. Этот стиль определяет наличие заголовка, системного меню, кнопок
минимизации и максимизации, кнопки закрытия окна и «толстой» рамки, позволяющей
изменять размеры окна. Перекрывающие окна предназначены для главных окон
приложений и могут иметь меню.
Всплывающие окна
создаются функцией CreateWindowEx() со стилем WS_POPUP и предназначены для окон диалогов, окон сообщений и других окон
временного использования, которые могут находиться вне главного окна
приложения. Для того чтобы временное окно имело заголовок, рамку и системное
меню, необходимо при его создании использовать комбинацию стилей WS_POPUPWINDOW | WS_CAPTION .
Дочерние окна
создаются функцией CreateWindowEx() со стилем WS_CHILD и обычно используются для разделения клиентской области
родительского окна на отдельные функциональные области.Дочерние окна могут
иметьзаголовок, системное
меню, кнопки минимизации и максимизации, рамку и полосы прокрутки, но не могут
иметь меню. Дочерние окна всегда находятся в пределах клиентской области
родительского окна, т.е. их координаты всегда отсчитываются от левого верхнего
углародительского окна. Родительское окно может быть
перекрывающим, всплывающим или даже другим дочерним окном.
3. Описание используемых API-функций
Вызывает процедуру окна по умолчанию, чтобы
обеспечить стандартную обработку сообщения для любого окна. Эта функция
гарантирует, что каждое сообщение обрабатывается.
LRESULT
WINAPI DefWindowProc
(
__in
UINT Msg,
// Сообщение.
__in
WPARAM WPARAM,
// Дополнительная информация о сообщении. Содержание этого параметра зависит от
значения параметра Msg.
__in LPARAM LPARAM // Дополнительная информация
о сообщении. Содержание этого параметра зависит от значения параметра Msg.
);
InvalidateRect
Добавляет прямоугольник к области
модификации указанного окна. Обновление региона представляет собой часть
клиентской области окна, которые должны быть перерисованы.
BOOL
InvalidateRect (
__in
HWND HWND,
// Дескриптор окна, процедуры, которые получили это сообщение.
__in
CONST RECT
* LPRECT, // Указатель на
RECT структуру, которая содержит клиентские координаты прямоугольника, которые
будут добавлены к области модификации. Если этот параметр равен NULL, вся
клиентская область добавлена к области модификации.
__in BOOL bErase //
Указывает, будет ли фон внутри области модификации удален при обновлении
области обработки. Если этот параметр имеет значение TRUE, фон стирается при
BeginPaint
<#"721832.files/image001.gif">
Вывод
В результате выполнения курсовой работы была
изучена графика в Windows,
написана программа на 32-битном ассемблере.