Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учеб пособие по КР, СПО.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.72 Mб
Скачать

Продолжение прил. П3

MessageBox(hDlg, "Enter all variables and run again!", "Attention", MB_ICONINFORMATION);

return false;

}

//Функция отправки сообщения

//в ListBox (в данном случае

//очистка ListBox)

SendDlgItemMessage(hDlg, IDC_LISTING, LB_RESETCONTENT, 0, 0);

//Цикл по созданию тредов

for(int a = THREAD1;

a <= THREAD4; a++) {

//Заполнение массива

//hThread хендлами

//тредов

hThread[a] =

CreateThread(NULL,

NULL, pThread[a], NULL,

NULL, &ThreadID);

//Установка приоритетов

//тредов

SetThreadPriority(hThread[a],

THREAD_PRIORITY_TIME_CRITICAL);

}

//Функции "активации

//деактивации"

//кнопок START и TERMINATE

EnableWindow(GetDlgItem(hDlg,

IDC_START), false);

EnableWindow(GetDlgItem(hDlg,

IDC_TERMINATE), true);

}

break;

//Обработка сообщения по нажатии

//кнопки TERMINATE

case IDC_TERMINATE: {

Продолжение прил. П3

//Цикл по принудительному

//завершению

//всех тредов (функция

//TerminateThread)

for(int a = THREAD1; a <=

THREAD4; a++) {

TerminateThread(hThread[a],

false);

}

//Функции "активации

//деактивации"

//кнопок START и TERMINATE

EnableWindow(GetDlgItem(hDlg,

IDC_TERMINATE), false);

EnableWindow(GetDlgItem(hDlg,

IDC_START), true);

}

}

}

break;

//Обработка сообщения при создании диалогового

//приложения

case WM_INITDIALOG: {

hMainDlg = hDlg;

//Функция отправки сообщения

SendMessage(hDlg, WM_SETICON, ICON_BIG,

(LPARAM)LoadIcon(0, IDI_EXCLAMATION));

}

break;

//Обработка сообщения по нажатии кнопки CLOSE

case WM_CLOSE:

//Функция завершения диалогового

//приложения

EndDialog(hDlg, 0);

}

return false;

}

//Точка входа в программу

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {

//Цикл по созданию объектов события функцией

//CreateEvent

for(int a = S12; a <= S41; a++)

Окончание прил. П3

event_obj[a] = CreateEvent(NULL, false, false,

NULL);

//Функция создания диалогового окна

DialogBoxParam(hInstance,

MAKEINTRESOURCE(IDD_MAINDLG), 0, (DLGPROC)DlgProc,

0);

return false;

}

Приложение П4

#ifndef MAIN_H

#define MAIN_H

#define A 0

#define B 1

#define C 2

#define D 3

#define E 4

#define F 5

#define G 6

#define H 7

#define I 8

#define J 9

#define K 10

#define L 11

#define M 12

#define S12 0

#define S13 1

#define S32 2

#define S24 3

#define S31 4

#define S41 5

#define THREAD1 0

#define THREAD2 1

#define THREAD3 2

#define THREAD4 3

//Организация макроподстановки для вывода состояний тредов

//в ListBox

//с помощью функции SendDlgItemMessage

#define addstr(str) SendDlgItemMessage(hMainDlg,

IDC_LISTING, LB_ADDSTRING, 0,

(LPARAM)#str); \

SendDlgItemMessage(hMainDlg,

IDC_LISTING, LB_SETTOPINDEX, \

SendDlgItemMessage(hMainDlg,

IDC_LISTING, LB_GETCOUNT, 0, 0) –

1, 0)

void Thread1();

void Thread2();

void Thread3();

void Thread4();

#endif

Приложение п5

.model small

.stack 20h ; 6 bytes needed

.data

A equ 24

B equ 22

C equ 20

D equ 18

E equ 16

F equ 14

G equ 12

H equ 10

I equ 8

J equ 6

K equ 4

L equ 2

M equ 0

in_string db 'Введите число A = $'

in_array dw 13 dup (0)

otvet db 13,10,'Ответ равен $'

press_enter db 13,10,13,10,'Нажмите <Enter> для

завершения...$'

.code

entrypoint:

mov ax,@data

mov ds,ax

mov cx,13

@1: xor si,si

mov dx,offset in_string

mov ah,9

int 21h

@3: mov ah,8

int 21h

cmp al,0Dh

je @2

cmp al,'0'

jb @3

cmp al,'9'

ja @3

mov ah,2

mov dl,al

int 21h