
- •«Техника работы с окнами»
- •Содержание
- •Описание используемых api-функций
- •InvalidateRect Добавляет прямоугольник к области модификации указанного окна. Обновление региона представляет собой часть клиентской области окна, которые должны быть перерисованы.
- •CreateWindowEx Создает перекрывающее, всплывающее или дочернее окно с расширенным стилем окна.
- •DispatchMessage
- •Исходный текст отлаженной программы
- •Результаты работы программы:
- •Список литературы:
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
ИжГТУ имени М.Т. Калашникова
Кафедра «Вычислительная техника»
Отчет по курсовой работе
«Техника работы с окнами»
по курсу «Операционные системы»
Выполнил:
студент группы 8-78-1
Николаев С.В.
Проверил:
Вахрушева Е.А.
Ижевск 2014
Содержание
Цель работы: 3
Задание: 3
Общие сведения 3
Описание используемых API-функций 5
Исходный текст отлаженной программы 9
Результаты работы программы 18
Вывод 19
Список литературы 19
Цель работы:
Изучение одного из разделов операционной системы – техника работы с окнами. Изучение 32-битного программирования на ассемблере с использованием API-функций.
Задание:
Вариант №8 - Техника работы с окнами.
Общие сведения
Основой в программировании под Windows, является использование специальных API-функций (API, Application Programming Interface — прикладной программный интерфейс). Windows - API — это большая коллекция функций, располагающихся непосредственно в операционной системе. Эти функции находятся в нескольких динамически компонуемых библиотеках (DLL), таких как kernel32.dll, user32.dll и gdi32.dll. Кроме этих трех, существуют также другие библиотеки, которые можно использовать. Windows-программы динамически подсоединяется к этим библиотекам, то есть код API-функций не включается в исполняемый файл. Информация находится в библиотеках импорта. Необходимо линковать программы с правильными библиотеками импорта, иначе они не смогут найти используемые функции. Существует два типа API-функций: один для ANSI, где на конце имен API-функций стоит "A", и другой для UNICODE, где в конце имен функций находится "W". Размер ANSI-символа — 1 байт. Размер символа UNICODE — 2 байта.
Данные, которые передаются API-функциям, должны находиться в стеке. То есть, API-функции, которые вызываются из программы, берут данные из стека для своего использования. При использовании директивы Invoke вызов функции становится проще: она сама заботится о помещении передаваемых параметров в стек.
Главным элементом программы в среде Windows является окно. Свойства конкретного окна задаются при вызове функции CreateWindow определением параметра Style. Константы, определяющие свойства окна, содержатся в специальных файлах, которые подключаются при компиляции. Поскольку свойства фактически определяются наличием или отсутствием того или иного бита в константе, комбинация свойств — это просто сумма констант. В отличие от многих рекомендаций для разработчиков все константы здесь определяются непосредственно в программах.
В целом, в коде программы можно выделить следующие секции:
Регистрация класса окон;
Создание главного окна;
Цикл обработки очереди сообщений;
Процедура главного окна.
Регистрация класса окон. Осуществляется с помощью функции RegisterClassA, единственным параметром которой является указатель на структуру WNDCLASS, содержащую информацию об окне.
Создание окна. На основе зарегистрированного класса с помощью функции CreateWindowExA (или CreateWindowA) можно создать экземпляр окна. Как можно заметить, это весьма напоминает объектную модель программирования.
Цикл ожидания играет двоякую роль: определенным образом преобразуются сообщения, предназначенные для какого-либо окна, и ожидается сообщение о выходе из программы.
Процедура главного окна. Вот прототип функции окна на языке С:
LRESULT CALLBACK WindowFunc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
Вот смысл этих параметров: hwnd — идентификатор окна, message — идентификатор сообщения, wParam и lParam — параметры, уточняющие смысл сообщения (для каждого сообщения могут играть разные роли или не играть никаких). Все четыре параметра имеют тип DWORD.
Окно может содержать элементы управления: кнопки, списки, окна редактирования и др. Эти элементы, по сути, также являются окнами, но обладающими особыми свойствами. События, происходящие с этими элементами (и самим окном), приводят к приходу сообщений в процедуру окна. Программирование под Windows в значительной степени является программированием обработки таких сообщений. Сообщения генерируются системой также в случаях каких-либо визуальных событий, происходящих с окном или элементами(можно выделить как управляющие элементы (кнопки, переключатели), так и управляемые элементы (окна редактирования)). К таким событиям относятся передвижение окна или изменение его размеров, нажатие кнопки, выбор элемента в списке, передвижение курсора мыши и т.д. и т.п. Это и понятно, программа должна как-то реагировать на подобные события. Например, сообщение WM_CREATE приходит один раз, когда создается окно, WM_PAINT посылается окну", если оно перерисовывается, сообщение WM_RBUTTONDOWN генерируется, если щелкнуть правой кнопкой мыши при расположении курсора мыши в области окна и т.д. Параметры сообщения могут не иметь никакого смысла либо играть уточняющую роль. Например, сообщение WM_COMMAND генерируется системой, когда что-то происходит с управляющими элементами окна. В этом случае по значению параметров можно определить, какой это элемент и что с ним произошло.