72394

РАЗРАБОТКА МНОГОПОТОЧНЫХ WINDOWS-ПРИЛОЖЕНИЙ, УПРАВЛЕНИЕ ПОТОКАМИ, ЗАПУСК ДОЧЕРНИХ ПРОЦЕССОВ В СРЕДЕ MS VISUAL C++

Лабораторная работа

Информатика, кибернетика и программирование

В программе должно быть следующее: описана главная функция приложения WinMin в которой регистрируется класс главного окна создается и выводится это окно организуется цикл обработки очереди сообщений приложения; главное окно приложения должно быть развернутым на весь экран в заголовке...

Русский

2014-11-21

118 KB

2 чел.

С лр№4 ИУС11а

ЛАБОРАТОРНАЯ РАБОТА № 4

РАЗРАБОТКА МНОГОПОТОЧНЫХ WINDOWS-ПРИЛОЖЕНИЙ, УПРАВЛЕНИЕ ПОТОКАМИ, ЗАПУСК ДОЧЕРНИХ ПРОЦЕССОВ В СРЕДЕ MS VISUAL C++

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

МЕТОДИЧЕСКИЕ УКАЗАНИЯ:

Задание: Для приведенных ниже вариантов заданий составить многопоточную Windows-программу в среде  Visual С++, в которой производится создание и выполнение 2 потоков: 1-й поток выполняет операции в главном окне приложения, 2-й поток - в другом окне (временное или дочернее), а также – запуск дочернего процесса. Управление потоками и запуск дочернего процесса осуществляется с помощью оконного меню главного окна.

Требования к программе. В программе должно быть следующее:

- описана главная функция приложения WinMain, в которой регистрируется класс главного окна, создается и выводится это окно, организуется цикл обработки очереди сообщений приложения;

- главное окно приложения должно быть развернутым на весь экран, в заголовке иметь надпись: Лабораторная работа № 4 по ОС студ. Фамилия И.О. группа <шифр> и содержать меню с пунктами (подпунктами): Поток 1 (Запустить, Приостановить, Завершить, Приоритет (7 уровней приоритета потока), Поток 2 (Запустить, Приостановить, Завершить, Приоритет (7 уровней приоритета потока), Процесс (Выбрать, Запустить), Выход. При обработке сообщений от первых двух пунктов меню в оконной функции необходимо вызывать соответствующие функции Win32 API для управления потоками. При выборе пункта "Выход" приложение должно завершить работу. Для выбора процесса  вызывается стандартный диалог Open и производится выбор на диске запускаемого программного файла, после чего его полный путь и имя отображаются в строке состояния главного окна. По команде "Запустить" производится запуск программы, определенной заданием, если имя программы не выбрано, то запуск не производится, выдается сообщение с помощью функции MessageBox;

- оба окна должны иметь строку состояния, в которой отображается а) Состояние потока (Работает, Приостановлен, Завершен); б) Текущий приоритет потока – число;

- 1-й и 2-й потоки должны быть созданы в приостановленном состоянии в оконных функциях (по сообщению WM_CREATE), для потоков должны быть описаны соответствующие потоковые функции, выполняющие в цикле операции в окнах согласно варианту задания. Запуск потоков в работу, их приостановка и завершение производятся с помощью меню.

- в рабочей области главного окна, при запуске 1-го потока должен отображаться текст или результаты расчетов согласно варианту задания. Выводимый график должен размещаться на всю рабочую область окна, для этого значения функции должны быть масштабированы с учетом количества выводимых пикселей по осям X и Y. При приостановке потока вывод останавливается, при завершении – окно очищается;

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

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

Используемые Win32 API функции: для работы с потоками необходимо использовать функции CreateThread, GetThreadPriority, SetThreadPriority, ResumeThread, SuspendThread, Sleep; для запуска дочернего процесса необходимо использовать функцию CreateProcess.

Порядок выполнения работы:

1. Создать проект Windows-приложения (последовательность действий: выбрать меню File -> выбрать пункт New -> выбрать закладку Projects -> отметить тип создаваемого проекта Win32 Application -> ввести имя проекта в поле Project name -> выбрать кнопку OK -> отметить тип A simple Win32 application -> выбрать кнопку Finish -> выбрать кнопку OK).

2. В окне просмотра классов и файлов на вкладке FileView выбрать cpp-файл, затем в окне редактирования ввести исходный текст программы.

3. Создать файл с описанием ресурсов (диалоговое окно и другие ресурсы при необходимости) с использованием редактора ресурсов.

4. Cоздать исполняемый модуль приложения - трансляция, компоновка (последовательность действий: выбрать меню Build -> выбрать пункт Rebuild All).

5. Проверить результат работы приложения - запуск исполняемого модуля (последовательность действий: выбрать меню Build -> выбрать пункт Execute).

ВАРИАНТЫ ЗАДАНИЙ:

№ вар

Поток или процесс

Вид выполняемого действия потоком/

Имя запускаемого процесса

1

Поток 1

(гл. окно)

График случайного процесса Y=f(t), t в диапазоне [t0; tend], Y – случайное число. Вывод попиксельно  с интервалом 0,2 сек

Поток 2

(врем. окно)

Прямоугольная рамка перемещается по вертикали от верхней границы окна к нижней и наоборот с интервалом 0,5 сек

Процесс

Notepad.exe

2

Поток 1

(гл. окно)

Поле рассеяния двумерной случайной величины (x,y), где x и y лежат в диапазоне от MIN до MAX. Точки на плоскости появляются с частотой 0,5 с.

Поток 2

(доч. окно)

Текстовая строка перемещается по пери-метру окна по часовой стрелке с шагом 20 пикселей с интервалом 0,7 сек

Процесс

Winword.exe.exe

3

Поток 1

(гл. окно)

Бегущая строка

Поток 2 

(врем. окно)

Квадрат изменяет свои размеры от минимальных до максимальных и наоборот, произвольно меняя  цвет с интервалом 0,3 сек

Процесс

WordPad.exe

4

Поток 1

(гл. окно)

Бегущая строка

Поток 2 

(врем. окно)

Битовый образ перемещается по углам окна по часовой стрелке с интервалом 0,7 сек

Процесс

MSaccess.exe

5

Поток 1

(гл. окно)

Счетчик продолжительности работы потока (в секундах). Каждые 10 секунд шрифт увеличивается на 2п

Поток 2

(доч. окно)

В центре окна появляются строка из цифр от 0 до 9, увеличиваясь в размере от 10 пт до 30 пт с интервалом 0,5 сек

Процесс

Explorer.exe

6

Поток 1

(гл. окно)

Окно заполняется случайными числами (цвет черный на белом фоне) в диапазоне от 0 до Xmax, если число больше XG, то цвет фона числа меняется на красный, если меньше XS – цвет фона синий)

Поток 2 

(врем. окно)

Эллипс перемещается по углам окна по часовой стрелке с интервалом 1 сек

Процесс

WordPad.exe

7

Поток 1

(гл. окно)

Вывод графика функции  в диапазоне [-4; 0] с интервалом 0,5 сек 

Поток 2

(доч. окно)

Текстовая строка перемещается по боковой диагонали снизу-вверх и наоборот с шагом 20 пикселей по вертикали с интервалом 0,5 сек

Процесс

Winrar.exe

8

Поток 1

(гл. окно)

В новой строке окна каждую секунду выводится значения N  и соответствующей ему суммы N случайных чисел из диапазона [0,1]; N последовательно увеличивается от 1 до бесконечности.

Поток 2 

(врем. окно)

Битовый образ перемещается по диагонали сверху-вниз и наоборот с шагом (40,30) пикселей с интервалом 0,5 сек

Процесс

Excel.exe

9

Поток 1

(гл. окно)

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

Поток 2

(доч. окно)

Прямоугольная рамка перемещается по углам окна против часовой стрелки с интервалом 1 сек

Процесс

WordPad.exe

10

Поток 1

(гл. окно)

График случайного процесса Y=f(t), t в диапазоне [t0; tend], Y – случайное число

Поток 2 

(врем. окно)

Текстовая строка перемещается по пери-метру окна по часовой стрелке с шагом 20 пикселей с интервалом 0,7 сек

Процесс

Mspaint.exe

11

Поток 1

(гл. окно)

Поле рассеяния двумерной случайной величины (x,y), где x и y лежат в диапазоне от MIN до MAX. Точки на плоскости появляются с частотой 0,5 с.

Поток 2

(доч. окно)

Сегмент эллипса перемещается слева-направо и наоборот с шагом 15 пикселей с интервалом 1 сек

Процесс

Wincmd32.exe

12

Поток 1

(гл. окно)

Бегущая строка

Поток 2 

(врем. окно)

Сектор эллипса перемещается по периметру окна по часовой стрелке с шагом 20 пикселей с интервалом 0,3 сек

Процесс

Winrar.exe

13

Поток 1

(гл. окно)

Счетчик продолжительности работы потока (в секундах). Каждые 10 секунд шрифт увеличивается на 2п

Поток 2

(доч. окно)

Прямоугольник с закругленными краями изменяет свои размеры от минимальных до максимальных и наоборот, произвольно меняя  цвет с интервалом 0,5 сек

Процесс

Winword.exe

14

Поток 1

(гл. окно)

Окно заполняется случайными числами (цвет черный на белом фоне) в диапазоне от 0 до Xmax, если число больше XG, то цвет фона числа меняется на красный, если меньше XS – цвет фона синий)

Поток 2 

(врем. окно)

Квадрат перемещается по периметру окна по часовой стрелке с шагом 20 пикселей с интервалом 0,5 сек

Процесс

Winword.exe

15

Поток 1 (гл.окно)

Вывод графика функции e4,2*cosx в диапазоне [-5; 5] с интервалом 0,3с

Поток 2

(доч. окно)

Текстовая строка перемещается по углам окна против часовой стрелки с интервалом 0,7 сек

Процесс

WordPad.exe

16

Поток 1

(гл. окно)

Поле рассеяния двумерной случайной величины (x,y), где x и y лежат в диапазоне от MIN до MAX. Точки на плоскости появляются с частотой 0,5 с.

Поток 2

(доч. окно)

Окружность перемещается по периметру окна по часовой стрелке с шагом 20 пик-селей с интервалом 0,2 сек

Процесс

Mspaint.exe

17

Поток 1

(гл. окно)

Счетчик продолжительности работы потока (в секундах). Каждые 10 секунд шрифт увеличивается на 2п

Поток 2 

(врем. окно)

Текстовая строка перемещается по углам окна случайным образом с интервалом 0,7 сек

Процесс

Explorer.exe

18

Поток 1

(гл. окно)

Бегущая строка

Поток 2

(доч. окно)

Прямоугольник с закругленными краями перемещается по боковой диагонали снизу-вверх и наоборот с шагом (10;10) с интервалом 1 сек

Процесс

Notepad.exe

19

Поток 1

(гл. окно)

Окно заполняется случайными числами (цвет черный на белом фоне) в диапазоне от 0 до Xmax, если число больше XG, то цвет фона числа меняется на красный, если меньше XS – цвет фона синий)

Поток 2 

(врем. окно)

Окружность в центре окна, изменяет свои размеры от 1/8 окна до касания границы окна и наоборот с интервалом 0,3 сек

Процесс

Calc.exe

20

Поток 1

(гл. окно)

Вывод графика функции 10lg|-5*x| в диапазоне [-10; -5] с интервалом 0,2 сек

Поток 2

(доч. окно)

Текстовая строка перемещается по периметру окна против часовой стрелки с шагом 30 пикселей с интервалом 1 сек

Процесс

BP.EXE

21

Поток 1

(гл. окно)

В новой строке окна каждую секунду выводится значения N  и соответствующей ему суммы N случайных чисел из диапазона [0,1]; N последовательно увеличивается от 1 до бесконечности.

Поток 2 

(врем. окно)

Сектор эллипса изменяет угол от 0 до 180 и наоборот с интервалом 0,5 сек

Процесс

BC.EXE

22

Поток 1

(гл. окно)

В новой строке окна каждую секунду выводится значения N  и соответствующей ему суммы N случайных чисел из диапазона [0,1]; N последовательно увеличивается от 1 до бесконечности.

Поток 2 

(врем. окно)

Прямоугольник с закругленными краями перемещается сверху вниз и наоборот с шагом 10 пикселей с интервалом 1 сек

Процесс

Excel.exe

23

Поток 1

(гл. окно)

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

Поток 2

(доч. окно)

Битовый образ перемещается слева-направо и наоборот с шагом 20 пикселей с интервалом 0,3 сек

Процесс

Bp.exe

24

Поток 1

(гл. окно)

График случайного процесса Y=f(t), t в диапазоне [t0; tend], Y – случайное число

Поток 2 

(врем. окно)

Прямоугольник перемещается по углам окна по часовой стрелке с интервалом 0,5 сек

Процесс

MSaccess.exe

25

Поток 1

(гл. окно)

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

Поток 2

(доч. окно)

Битовый образ перемещается по окружности радиусом 180 пикселей против часовой стрелки на 10о с интервалом 0,4 сек

Процесс

Mspaint.exe


 

А также другие работы, которые могут Вас заинтересовать

21516. Медицинская служба полка 147 KB
  Задачи медицинской службы полка. В условиях современных боевых действий медицинская служба полка призвана решать ответственные задачи по всестороннему медицинскому обеспечению подразделений входящих в состав полка. На нее возлагается проведение таких лечебноэвакуационных мероприятий как: розыск раненых оказание им первой медицинской помощи сбор и вывоз вынос их с поля боя; эвакуация раненых и больных из подразделений полка очагов массового поражения на медицинский пункт оказание раненым и больным доврачебной и первой...
21517. Отдельный медицинский батальон 109.5 KB
  Состав и задачи медицинской службы дивизии. Медицинская служба дивизии состоит из: управления санитарноэпидемиологической лаборатории СЭЛ отдельного медицинского батальона омедб а также сил и средств медицинской службы частей и подразделений дивизии. Задачи медицинской службы дивизии: 1. Организация и проведение системы мероприятий по оказанию медицинской помощи раненым и больным их лечение.
21518. Организация медицинского обеспечения Мотострелкового ( танкового ) полка в обороне 79 KB
  Условия деятельности медицинской службы в оборонительном бою. Условия деятельности медицинской службы полка в обороне в значительной степени определяются тем как осуществляется подготовка и организация обороны. Сжатые сроки отводимые при этом для организации обороны в условиях непосредственного соприкосновения с противником создают большие трудности в подготовке медицинской службы и работе в предстоящем оборонительном бою. Очевидно что при заблаговременной подготовке к обороне создаются более благоприятные условия и для подготовки...
21519. Организация медицинского обеспечения мотострелкового (танкового) полка в наступлении 81.5 KB
  Условия деятельности медицинской службы в наступательном бою возможные санитарные потери. В наступательном бою войска действуют как правило на недостаточно изученной только что освобожденной от противника территории состояние которой часто осложняет работу медицинской службы изза значительных разрушений жилого фонда дорог мостов и т. Это предопределяет необходимость своевременного проведения медицинской разведки специальных противоэпидемических и других профилактических мероприятий в войсках. В ходе наступления средства медицинской...
21520. Особенности организации медицинского обеспечения полка при ведении боевых действий в городе и в особых условиях 111.5 KB
  В частности затруднен розыск раненых нередко находящихся в подвалах завалах на верхних этажах чердаках и крышах поврежденных домов. В связи с этим необходим тщательный осмотр всех мест вероятного нахождения раненых. Санитарам или специально созданным поисковым командам назначаются объекты для розыска раненых или указываются направлении поисков. Извлечение раненых из подвалов завалов и снятия с верхних этажей зданий представляет часто большие трудности.
21521. Организация медицинского обеспечения войск при передвижении 104 KB
  Условия деятельности медицинской службы на марше и во встречном бою. Особенности проведения марша предъявляют к медицинской службе полка определённые требования которые нельзя не учитывать при организации его медицинского обеспечения. Возможность применения противником авиации и средств массового поражения по маршевым колоннам; вероятность воздействия на них воздушных десантов диверсионных и разведывательных групп всё это обуславливает необходимость постоянной готовности медицинской службы к оказанию помощи независимо от...
21522. Медицинские части и учреждения объединений 207 KB
  Использование имеющихся сил и средств для эвакуации раненых и больных из мпп и районов массовых санитарных потерь в омо и омедб а также эвакуация раненых и больных своим приданным санитарным транспортом в военные полевые госпитали госпитальной базы пгб. Возможность по эвакуации более 1700 раненых и больных за один рейс; В. На отдельный медицинский отряд возлагаются следующие задачи:  эвакуация раненых и больных на себя из мпп а в ряде случаев непосредственно из очагов массовых санитарных потерь;  прием регистрация медицинская...
21523. Медицинская служба ВС РФ в чрезвычайных ситуациях мирного времени 91 KB
  Она характеризующуюся неопределенностью и сложностью принятия решений значительным экологическим ущербом человеческими жертвами необходимостью помощи извне и вследствие этого крупных людских материальных и временных затрат на проведение эвакуационноспасательных работ и ликвидацию последствий этих аварий катастроф и бедствий. Перед медицинскими формированиями Министерства Обороны работающими совместно со службой экстренной медицинской помощи Министерства Здравоохранения стоят аналогичные с ней задачи а именно: восстановление...
21524. Понятие о военной и экстремальной медицине 252 KB
  Необходимые базы обеспечивающие развитие теории и совершенствование практики здравоохранения ВС является военномедицинской организацией которая представлена специально предназначенными для этого силами и средствами объединёнными Вооруженных Сил в специализированную систему действующую на основе определённых принципов и правил военномедицинскую службу. Следовательно в своём становлении и развитии военная медицина базируется не только на общих положениях медицинской но также в не меньшей степени и военной науки. Вместе с тем...