Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчеты по Курсовой Работе / Зыкина ресурсы С06-361-1.doc
Скачиваний:
36
Добавлен:
12.03.2015
Размер:
359.94 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Федеральное Государственное Бюджетное Образовательное

Учреждение Высшего Профессионального Образования

«Ижевский Государственный Технический Университет имени М.Т. Калашникова»

(ФГБОУ ВПО «ИжГТУ имени М.Т. Калашникова»)

Факультет «Информатика и вычислительная техника»

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

Курсовая работа

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

на тему «Ресурсы в ОС Windows»

Вариант 14

Выполнил: ст. гр. С06-361-1

Зыкина А.И.

Проверил: к.т.н., доцент

Вахрушева Е.А.

Ижевск-2014

Содержание

Цель работы..........................................................................................................................2

Вариант задания....................................................................................................................2

1. Краткие теоретические сведения....................................................................................3

1.1. Общие положения о программировании в Windows.......................................3

1.2. Общие правила вызова функций API................................................................5

1.3. Структура окна....................................................................................................7

1.4. Понятие ресурсов в ОС Windows......................................................................8

1.4.1. Иконки. ...................................................................................................8

1.4.2. Курсоры. .................................................................................................8

1.4.3. Битовая картинка....................................................................................9

1.4.4. Строка......................................................................................................9

1.4.5. Диалоговое окно...................................................................................10

1.4.6. Меню.....................................................................................................12

1.4.7. Акселераторы.......................................................................................13

2. Описание используемых API-функций и констант....................................................16

2.1. Используемые константы.................................................................................16

2.2. Используемые функции....................................................................................16

3. Листинг................................................................................................................................28

4. Результат работы программы........................................................................................36

Вывод...................................................................................................................................36

Список используемых источников...................................................................................37

Цель работы

Изучить основы программирования на 32-битном ассемблере, про помощи которого необходимо разработать программу, демонстрирующую работу с ресурсами в ОС Windows. Изучить понятие ресурса в ОС Windows. Научиться работать с редакторами и трансляторами ресурсов.

Вариант задания

Понятие ресурса. Редакторы и трансляторы ресурсов. Примеры использования ресурсов.

1. Краткие теоретические сведения

1.1. Общие положения о программировании в Windows

  1. Программирование в Windows основывается на использовании функций API (Application Program Interface - интерфейс программного приложения). Их количество достигает двух тысяч. Ваша программа в значительной степени будет состоять из таких вызовов. Все взаимодействие с внешними устройствами и ресурсами операционной системы будет происходить посредством таких функций.

  2. Список функций API и их описание можно брать из файла WIN32.HLP, который поставляется, например, с пакетом Borland C++.

  3. Главным элементом программы в среде Windows является окно. Для каждого окна определяется своя процедура обработки сообщений.

  4. Окно может содержать элементы управления: кнопки, списки, окна редактирования и др. Эти элементы, по сути, также являются окнами, но обладающими особыми свойствами. События, происходящие с этими элементами (и самим окном), приводят к приходу сообщений в процедуру окна.

  5. Операционная система Windows использует линейную адресацию памяти. Другими словами, всю память можно рассматривать как один сегмент. Для программиста на языке ассемблера это означает, что адрес любой ячейки памяти будет определяться содержимым одного 32-битного регистра, например ЕВХ.

  6. Следствием пункта 5 является то, что мы фактически не ограничены в объеме данных, кода или стека (объеме локальных переменных). Сегменты в тексте программы играют теперь другую роль. Они позволяют задать отдельным фрагментам кода (секциям) определенные свойства: запрет на запись, общий доступ и т. д.

  7. Операционная система Windows является многозадачной средой. Каждая задача имеет свое адресное пространство и свою очередь сообщений. Более того, даже в рамках одной программы может быть осуществлена многозадачность - любая процедура может быть запущена как самостоятельная задача.

1.2.Общие правила вызова функций api

 Начнем с того, как можно вызвать функции API. Обратимся к файлу помощи и выберем любую функцию API, например, MessageBox:

int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT Type);

Данная функция выводит на экран окно с сообщением и кнопкой (или кнопками) выхода. Смысл параметров:

hWnd – дескриптор окна, в котором будет появляться окно-сообщение

lpText – текст, который будет появляться в окне

lpCaption – текст в заголовке окна

uType  – тип окна, в частности можно определить количество кнопок выхода.

Теперь о типах параметров. Все они в действительности 32-битные целые числа:

HWND – 32-битное целое

LPCTSTR – 32-битный указатель на строку

UINT – 32-битное целое

К имени функции необходимо добавлять суффикс "A", кроме того, при использовании MASM необходимо также в конце имени добавить @16. Таким образом, вызов указанной функции будет выглядеть так:

CALL MessageBoxA@16.

Параметры следует предварительно поместить в стек командами PUSH по правилу: слева направо - снизу вверх. Итак, пусть дескриптор окна расположен по адресу HW, строки - по адресам STR1 и STR2, а тип окна-сообщения – это константа. Самый простой тип имеет значение 0 и называется MB_OK. Имеем следующее:

МВ_ОК equ 0

. . . .

STR1 DB "Неверный ввод! ", 0

STR2 DB "Сообщение об ошибке.",0

HW DWORD ?

. . . .

PUSH МВ_ОК

PUSH OFFSET STR1

PUSH OFFSET STR2

PUSH HW

CALL MessageBoxA@16

   Результат выполнения любой функции - это, как правило, целое число, которое возвращается в регистре ЕАХ.

    Аналогичным образом в Ассемблере легко воспроизвести те или иные C-структуры.

 

   Рассмотрим, например, структуру, определяющую системное сообщение:

typedef struct tagMSG // msg

{

HWND hwnd;

UINT message;

WPARAM wParam;

LPARAM lParam;

DWORD time;

POINT pt;

} MSG;

На ассемблере эта структура будет иметь вид:

MSGSTRUCT STRUC

MSHWND DD ?

MSMESSAGE DD ?

MSWPARAM DD ?

MSLPARAM DD ?

MSTIME DD ?

MSPT DD ?

MSGSTRUCT ENDS