72394

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

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

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

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

Русский

2014-11-21

118 KB

1 чел.

С лр№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


 

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

53036. Інтелектуально – пізнавальна гра: «Колесо фортуни» 63.5 KB
  На запитання на яке учасник не дає правильної відповіді пропонується відповісти будькому бажаючому бажано тому хто має найменшу кількість балів. Хтось дівчинку цю по дорозі зустрів. Як казка ця зветься Хто б відповів Червоний Капелюшок 3. Хто такі мариністи художники які малюють море 2.
53038. Опрацювання зображень засобами програми Photo Express 1.03 MB
  Мотивація навчальної діяльності Зараз використовується багато графічних редакторів за допомогою яких можна самостійно створювати графічні зображення та вносити зміни до відсканованих картинок малюнків фотографій перенесених із цифрової камери тощо. За допомогою Photo Express можна відкривати та редагувати фотографії а також малювати додавати текст створювати різноманітні ефекти зберігати і друкувати зображення. Програма має багато готових шаблонів які містять текст зображення рамки фон з якими можна почати працювати. Вибрати...
53039. Фотография урока русского языка 47.5 KB
  Мотивации и стимулирования; информационнорецептивные; эвристические волевые методы Фронтальная индивидуальная Указаны планируемые результаты чётко поставлены образовательные и развивающие цели сформулированные вместе с учащимися в их действиях но нет чёткости в постановке воспитательных целей. Лекция диалог символические методы сочетание словесных и наглядных методов опора на личностный опыт побуждение к поиску альтернативных решений практические методы логические методы Фронтальная индивидуальная Активные действия учащихся при...
53041. Фотосинтез 556.5 KB
  За казкою Фарида Алекперова Про що ця казка Ви вже здогадалися Так про процес фотосинтезу. Вивчення нового матеріалу Історія вивчення фотосинтезу Міні доповіді учнів У 1630 році голландський лікар Ян Гельмонт хотів довести що рослини харчуються за допомогою землі і тому проводив дослід: верба що росте в горщику і поливається водою за 5 років збільшила вагу на 74 кг а вага...
53042. Сочинение по картине И.И. Левитана «Золотая осень» 29 KB
  Левитана Золотая осень Цель. Какое время года сейчас Осень . А какая осень Ранняя Чем ранняя осень отличается от поздней Ранней осенью природа богата разнообразными красками. Пушкина и скажите при помощи чего изображена осень Унылая пора Очей очарованьеПриятна мне твоя прощальная краса Люблю я пышное природы увяданьеВ багрец и золото одетые леса.
53043. Части тела 29.5 KB
  В данном уроке я буду использовать телепередачу «Funny English – части тела». А именно: считалочку на английском языке, которую сочинили Энн и Сэм, мы заучим с ребятами и с помощью данной считалочки мы выберем того человека, который будет проводить физ.минутку.
53044. Фрактали – це наука чи краса 6.62 MB
  Обговорення та складання плану роботи кожною групою проекту. «Історики» отримали завдання зібрати відомості про дослідження та виникнення поняття «фрактал», а також про вчених, які зробили внесок у розвиток цієї теми