Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПро - методичка.pdf
Скачиваний:
32
Добавлен:
16.03.2016
Размер:
847.14 Кб
Скачать

7.Что такое "критический раздел"?

8.Что такое "событие"?

9.Объясните назначение локальной и глобальной памяти потоков.

6.МНОГООКОННЫЙ ИНТЕРФЕЙС

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

Ознакомление с технологией создания многооконного интерфейса (Multiple Document Interface, MDI), получение практических навыков по составлению, написанию и отладке программ, позволяющих работать с несколькими документами (форматированными файлами) в одном приложении.

6.2. Указания по подготовке к выполнению лабораторной работы

Необходимо изучить спецификацию структур окон и пользовательский интерфейс, который позволяет пользователю работать одновременно с несколькими документами. Студент должен знать иерархию родительских и дочерних окон приложения MDI в Windows, принципы их создания и обеспечения функционирования.

При подготовке к работе необходимо изучить конспект лекций по указанной теме, методические указания, а также разделы, указанные в [16, c.962-987], [17, c.199-271].

6.3. Обзор темы работы

Многооконный интерфейс (Multiple Document Interface, MDI) является спецификацией для приложений, которые обрабатывают документы в Microsoft Windows. Спецификация описывает структуру окон и пользовательский интерфейс, который позволяет пользователю работать с несколькими документами внутри одного приложения (например, с документами в текстовом процессоре или с таблицами в программе электронных таблиц). Точно также, как Windows поддерживает несколько окон приложений на одном экране, приложение MDI поддерживает несколько окон документов в одной рабочей области.

Данная спецификация должна поддерживать следующие возможности:

1.Окно документа MDI может быть свернуто. Соответствующий документу значок выводится в нижней части рабочей области.

2.Окно документа может быть развернуто. В этом случае строка заголовка окна документа исчезает, и имя файла оказывается присоединенным к имени приложения в строке заголовка окна приложения. Значок системного меню окна документа становится первым пунктом строки основного меню окна приложения. Значок для восстановления размера

окна документа становится последним пунктом строки основного меню

и оказывается крайним справа.

3.Системные быстрые клавиши для закрытия окна документа те же, что и для закрытия главного окна, за исключением того, что клавиша <Ctrl> используется вместо клавиши <Alt>.

4.Если приложение имеет возможность поддерживать несколько типов дочерних окон (например, электронные таблицы и диаграммы в Microsoft Excel), то меню должно отражать операции, ассоциированные с каждым типом документа. Для этого требуется, чтобы программа изменяла меню, когда становится активным окно документа другого типа. Кроме того, при отсутствии окна документа, в меню должны быть представлены только операции, связанные с открытием нового документа.

5.В строке основного меню имеется пункт Window. По соглашению, он является последним пунктом строки основного меню, исключая Help. В этом подменю обычно имеются опции для упорядочивания окон документов внутри рабочей области. Окна документов можно расположить «каскадно» (cascaded), «мозаично» (tiled), отобразить все документы.

Окно приложения в целом называется главным окном (frame window). Приложение MDI создает также окно-администратор (client window) на основе предопределенного класса окна MDICLIENT. Окна документов являются дочерними окнами окна-администратора, которое, в свою очередь, является дочерним окном главного окна. Для главного окна и для каждого типа дочерних окон, которые поддерживаются в приложении, необходим класс окна и оконная процедура. Для окна-администратора оконная процедура не нужна, поскольку ее класс окна предварительно зарегистрирован в системе.

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

6.4. Задание на лабораторную работу

Вариант 1 Написать простой многооконный графический редактор, позволяющий при

помощи мыши рисовать линии и прямоугольники. Редактор должен иметь возможность записи и чтения изображения в метафайл.

Вариант 2 Написать простейший многооконный текстовый редактор, позволяющий

вводить текст, сохранять его на диске в формате *.txt и читать в новое окно приложения.

Вариант 3 Создать многооконное приложение, каждое из создаваемых окон которого

является часами реального времени. Время выводится в аналоговой или цифровой форме, которая определяется пользователем перед созданием окна.

Вариант 4

Написать простой многооконный графический редактор, позволяющий при помощи мыши рисовать окружности и эллипсы. Редактор должен иметь возможность записи и чтения изображения в метафайл.

Вариант 5 Написать простой многооконный графический редактор, позволяющий при

помощи мыши рисовать прямоугольники. Редактор должен иметь возможность записи и чтения изображения в метафайл.

Вариант 6 Написать простой многооконный графический редактор, позволяющий при

помощи мыши рисовать полигоны. Точки задаются левой клавишей мыши, последняя точка полигона – по нажатию правой клавиши мыши. Редактор должен иметь возможность записи и чтения изображения в метафайл.

Вариант 7 Написать многооконное приложение, которое позволяет открывать от 1 до

8 дочерних окон. Все окна при создании имеют собственный оригинальный заголовок. Реализовать возможности упорядочения дочерних окон: показать все окна, «черепица», выбрать окно из списка.

Вариант 8 Написать простейший многооконный «просмотрщик» текстовых файлов.

Организовать скроллинг текста. Вариант 9

Написать многооконный «просмотрщик» графических файлов битового формата. Организовать скроллинг изображений.

Вариант 10 Написать многооконное приложение, в дочерних окнах которого отобра-

жаются дочерние окна управления (кнопки, флажки, переключатели, окна редактирования, списки). Перечень отображаемых элементов в окне определяется при помощи диалогового окна, возникающего перед созданием дочернего окна MDI.

6.5. Контрольные вопросы и задания

1.Охарактеризуйте элементы MDI.

2.Приведите иерархию родительских и дочерних окон приложения MDI в Windows.

3.Каким образом создаются дочерние окна программы?

4.Какими сообщениями обмениваются родительские и дочерние окна?

5.Какими сообщениями обмениваются активное дочернее окно и окноадминистратор при закрытии активного окна MDI – приложения?

6.Приведите примеры использования многооконных приложений.

7.РАЗРАБОТКА ДИНАМИЧЕСКИ ПОДКЛЮЧАЕМЫХ БИБЛИОТЕК

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

Ознакомление с одним из наиболее важным структурным элементом Windows – библиотеками динамической компоновки (Dynamic Link Libraries, DLL), получение практических навыков по созданию динамических библиотек.

7.2. Указания по подготовке к выполнению лабораторной работы

Необходимо изучить принципы динамического связывания функций и процедур Windows-приложений, обратить внимание на отличие в использовании стандартных статических библиотек функций языков программирования и динамических библиотек системного назначения.

При подготовке к работе необходимо изучить конспект лекций по указанной теме, методические указания, а также разделы, указанные в [16, c.9861013].

7.3. Обзор темы работы

Динамически подключаемые библиотеки (DLL, или динамические библиотеки, или библиотеки динамической компоновки, или модули библиотек) являются одним из наиболее важных структурных элементов Windows. Большинство файлов, из которых состоит Windows, представляют из себя либо программные модули, либо модули динамически подключаемых библиотек. Большая часть принципов, относящихся к написанию программ, вполне подходит и для написания этих библиотек, но есть несколько важных отличий.

Термин динамическое связывание (dynamic linking) относится к процессам, которые Windows использует для того, чтобы связать вызов функции в одном из модулей с реальной функцией из модуля библиотек. Статическое связывание (static linking) имеет место в процессе создания программы, когда для создания исполняемого (.exe) файла связываются воедино все объектные (.obj) модули, файлы библиотек (.lib) и, как правило, скомпилированные файлы описания ресурсов (.res). В отличие от этого, динамическое связывание имеет место во время выполнения программы.

Файлы KERNEL32.DLL, USER32.DLL, GDI32.DLL, файлы драйверов – все это динамически подключаемые библиотеки. Эти библиотеки можно использовать во всех программах Windows.

Динамически подключаемые библиотеки могут содержать только ресурсы либо данные и не содержать программ. Хотя модуль динамически подключаемой библиотеки может иметь любое расширение (например, .exe, .fon), стандартным расширением, принятым в Windows, является .dll. Только те динамически подключаемые библиотеки, которые имеют расширение .dll, Windows загрузит автоматически. Если файл имеет другое расширение, то программа должна загрузить модуль библиотеки явно. Для этого используется функция

LoadLibrary, LoadLibraryEx.

Как правило, наибольший смысл динамически подключаемые библиотеки приобретают в большом приложении, в приложениях использующих большой набор функций, состав и содержание которых может меняться во время эксплуатации и модификации. Кроме того, динамически подключаемые библиотеки сами могут стать ценным продуктом.

7.4. Задание на лабораторную работу

Вариант 1 Создать динамически подключаемую библиотеку, содержащую две функ-

ции, вычисляющие числа Фибоначчи и n-факториал. Использовать созданную DLL в другой программе.

Вариант 2 Создать динамически подключаемую библиотеку, содержащую графиче-

ские процедуры: рисования вписанных в прямоугольную область равностороннего пятиугольника и звезды. Прямоугольник задается объектом RECT. Использовать созданную DLL в другой программе.

Вариант 3 Создать динамически подключаемую библиотеку, которая содержит

функции преобразования строки символов из прописных в строчные и наоборот. Использовать созданную DLL в другой программе.

Вариант 4 Создать динамически подключаемую библиотеку функций поворота изоб-

ражения на 90, 180, 270 градусов. Использовать созданную DLL в другой программе.

Вариант 5 Создать динамически подключаемую библиотеку математических функ-

ций: ХУ, Хn + Xn-1 + .... + X1.Использовать созданную DLL в другой программе.

Вариант 6 Создать динамически подключаемую библиотеку функций поиска мини-

мума и максимума массива целых чисел (в функцию передается указатель на массив и число элементов массива). Использовать созданную DLL в другой программе.

Вариант 7 Создать динамически подключаемую библиотеку функций рисования тек-

стур на основе типа заполнения и параметров заполнения (например, количества точек на единицу площади). Предложить два-три типа текстур. Использовать созданную DLL в другой программе.

Вариант 8 Создать динамически подключаемую библиотеку функций вывода текста

в клиентскую область окна приложения с разными типами шрифтов. Использовать созданную DLL в другой программе.

Вариант 9 Создать динамически подключаемую библиотеку функций вывода на

экран времени в разных форматах (например, в цифровом и аналоговом виде). Использовать созданную DLL в другой программе.

Вариант 10 Создать динамическую библиотеку функций кодирования текстовой

строки методами подстановки и смещения таблицы кодов символов. Использовать созданную DLL в другой программе.