Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчеты по Курсовой Работе / Работа с окнами - 8-78-1-Николаев С.В.docx
Скачиваний:
34
Добавлен:
12.03.2015
Размер:
195.88 Кб
Скачать

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

ИжГТУ имени М.Т. Калашникова

Кафедра «Вычислительная техника»

Отчет по курсовой работе

«Техника работы с окнами»

по курсу «Операционные системы»

Выполнил:

студент группы 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 генерируется системой, когда что-то происходит с управляющими элементами окна. В этом случае по значению параметров можно определить, какой это элемент и что с ним произошло.