Графика в Windows
Краткое сожержание материала:
Размещено на
1. Цель работы
Изучить графику в Windows. Написать программу на 32-битном ассемблере, используя API-функции.
2. Теория
графика программный 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-функций
DefWindowProc
Вызывает процедуру окна по умолчанию, чтобы обеспечить стандартную обработку сообщения для любого окна. Эта функция гарантирует, что каждое сообщение обрабатывается.
LRESULT WINAPI DefWindowProc (
__in HWND HWND, // Дескриптор окна, процедуры, которые получили это сообщение.
__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. Если этот параметр имеет значение FALSE, фон остается неизменным.
);
CreateWindowEx
Создает перекрывающее, всплывающее или дочернее окно с расширенным стилем окна.
HWND WINAPI CreateWindowEx (
__in DWORD dwExStyle, // Расширенный стиль создаваемого окна.
__in_opt LPCTSTR lpClassName, // Имя класса окна.
__in_opt LPCTSTR lpWindowName, // Заголовок окна.
__in DWORD dwStyle, // Стиль создаваемого окна.
__in Int х, // Первоначальное горизонтальное положение окна.
__in Int у, // Первоначальное вертикальное положение окна.
__in Int nWidth, // Ширина окна.
__in Int nHeight, // Высота окна.
__in_opt HWND hWndParent, // Окно владельца создаваемого окна.
__in_opt HMENU HMENU, // Дескриптор меню.
__in_opt HINSTANCE HINSTANCE, // Дескриптор экземпляра модуля, который будет связан с окном.
__in_opt LPVOID lpParam // Указатель на значение, которое будет передано через структуры (lpCreateParams члена), на которую указывает параметр LPARAM сообщения WM_CREATE. Это сообщение посылается в окно, созданное этой функцией перед возвратом.
);
DispatchMessage
Отправляет сообщение в оконную процедуру.
LRESULT WINAPI DispatchMessage (
__in сопзЬ MSG * LPMSG // Указатель на структуру, содержащую сообщение.
);
ExitProcess
Завершает процесс и все его нити.
VOID WINAPI ExitProcess (
__in UINT uExitCode // Код выхода из процесса.
);
GetMessage
Извлекает сообщение из очереди сообщений вызывающего потока.
BOOL WINAPI GetMessage (
__out LPMSG LPMSG, // Указатель на MSG структура, которая получает информационное сообщение из очереди сообщений потока.
__in_opt HWND HWND, // Дескриптор окна, сообщения которого должны быть восстановлены. Окно должно принадлежать текущему потоку.
__in UINT wMsgFilterMin, // Самый маленький номер сообщения, которое должно быть найдено.
__in UINT wMsgFilterMax // Самый большой номер сообщения, которое должно быть найдено.
);
GetModuleHandle
Возвращает дескриптор модуля для указанного модуля.
HMODULE WINAPI GetModuleHandle (
__in_opt LPCTSTR lpModuleName // Имя загружаемого модуля (либо .DLL, либо .EXE-файл).
);
LoadCursor
Загружает указанный курсор.
LoadCursor HCURSOR WINAPI (
__in_opt HINSTANCE HINSTANCE, // Дескриптор экземпляра модуля, исполняемый файл которого содержит курсор и должен быть загружен.
__in LPCTSTR lpCursorName // Имя курсора для загрузки.
);
LoadIcon
Загружает указанную иконку.
HICON WINAPI LoadIcon(
__in_opt HINSTANCE hInstance, // Дескриптор экземпляра модуля, исполняемый файл содержит иконку для загрузки. Этот параметр должен быть NULL, если загружается стандартная иконка.
__in LPCTSTR lpIconName // Имя иконки для загрузки.
);
PostQuitMessage
Указывает системе, что поток просит завершение.
VOID WINAPI PostQuitMessage(
__in int nExitCode // Код выхода из приложения.
);
RegisterClass
Регистрирует класс окна для последующего использования при вызове CreateWindow или CreateWindowEx функции.
ATOM WINAPI RegisterClass (
__in сопзЬ WNDCLASS * lpWndClass // Указатель на WNDCLASS структуры.
);
ShowWindow
Устанавливает состояние показа указанного окна.
BOOL WINAPI ShowWindow (
__in HWND HWND, // Дескриптор окна.
__in Int nCmdShow // Управл...
Windows ХР для бывалого бойца
Книга посвящена Windows ХР — новейшей версии Microsoft Windows. Популярно рассказано об истории ОС Windows, настройке Windows XР и корпоративной мигра...
Операционные системы Windows
История создания. Windows 9x/NT. Операционная система Microsoft Windows. Преимущества и недостатки Windows. Некоторые клавиатурные комбинации Windows...
Технология программирования на C++. Win32 API-приложения
Изложен начальный курс низкоуровневого программирования на C++ для Windows с использованием библиотеки Win32 API. Рассмотрены графический интерфейс Wi...
Составляющие Windows
Универсальная многоцелевая сетевая операционная система Windows NT Server. Использование Windows NT Workstation как невыделенного сервера в однорангов...
Windows Phone 8 Application Development Essentials
Windows Phone 8 replaces Windows Phone 7 devices with the Windows NT kernel found on many Windows 8 components. Windows 8 will give you more options t...