Механизмы параллельных вычислений в Windows. Разработка справочной системы
Рефераты >> Программирование и компьютеры >> Механизмы параллельных вычислений в Windows. Разработка справочной системы

} else

out( "Barrier" );

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

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

РАЗДЕЛ 2

РАЗРАБОТКА СПРАВОЧНОЙ СИСТЕМЫ

В этом разделе курсового проекта рассматривается прорисовка графических примитивов и вывод справки по функциям API, использованным для создания этого объекта.

2.1. Вызов справки

Вызов справки не должен вызвать затруднений, в связи с тем, что файл справки уже создан и вызывается при нажатии правой кнопки мыши. Для вызова справки используется следующие операторы:

GetCurrentDirectory(256,buf);

strcat(buf,"/help/Shapes.hlp");

WinHelp(hDlg,buf,HELP_CONTENTS,0);

Рассмотрим более подробно синтаксис и назначение функций.

Функция GetCurrentDirectory(nBufferLength: DWORD; lpBuffer: PChar): DWORD возвращает текущий каталог. Обычно это каталог в котором была запущена программа.

Параметры:

nBufferLength - размер буфера для принимаемой строки

lpBuffer - принимый путь

Возвращаемое значение:

В случае успеха строка, содержащая путь, в случае неуспеха 0. Получить дополнительную информацию об ошибке исполнения можно с помощью функции GetLastError. Функция находится в файле kernel32.dll

Функция strcat(buf,"/help/Shapes.hlp") копирует строку "/help/Shapes.hlp" в переменную типа char c именем buf.

Функция WindHelp(Wnd: HWnd; HelpFile: PChar; Command: Word; Data: Longint) вызывает механизм Windows получения спpавочной инфоpмации с командой Command.

Паpаметpы:

Wnd: Идентификатор окна.

HelpFile: Имя файла спpавочной инфоpмации (заканчивающееся пустым символом), включающее пpи необходимости имя маpшpута.

Command: Одна из команд help_Context, help_HelpOnHelp, help_Index, help_Key, help_Quit или help_SetIndex.

Data: Номеp идентификатора контекста, если Command имеет значение help_Context, или ключевое слово спpавочной темы (заканчивающееся пустым символом), если Command имеет значение help_Key.

Возвращаемое значение:

Не нуль в случае успешного завершения; 0 - в противном случае.

2.1. Рисование графических примитивов

При рисовании линий активно используют значение текущей пози­ции пера. Чтобы узнать текущую позицию пера, вызывают функцию GetCurrentPositionEx: BOOL GetCurrentPositionEx( HDC hdc, LPPOINT IpPoint);

Параметр IpPoint указывает на структуру типа POINT, в которую бу­дут записаны логические координаты текущей позиции. В случае ус­пешного выполнения функция возвращает ненулевое значение.

Чтобы нарисовать прямую линию, вызывают функцию LineTo:

BOOL LineTo( HDC hdc, int x, int у);

В случае успешного выполнения функция LineTo рисует прямую ли­нию из текущей позиции до (но, не включая ее) точки с координатами (х, у). При этом текущая позиция переносится в точку (х, у), а возвращаемое значение отлично от нуля. Для рисования прямой используются текущие установки пера и, если прерывистая линия, текущие установки кисти фона вывода.

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

BOOL DrawLine( HDC hdc, int xO, int yO, int x, int y)

{

POINT pt;

MoveToEx (hdc, xO, yO, &pt);

return LineTo (hdc, x, y);

}

Эта функция рисует прямую, начиная от точки (хО, уО), до точки (х, у) и переносит текущую позицию в точку (х, у).

Для рисования эллипса используют функцию Ellipse:

BOOL Ellipse( HOC hdc, int I, int t, int r, int b);

Параметры функции Ellipse идентичны первым пяти параметрам функции Arc. В случае успешного выполнения функция возвращает не­нулевое значение. Функция игнорирует текущую позицию.

Сегмент эллипса рисуют при помощи функции Chord:

BOOL Chord(HDC hdc, int I, int t, int r, int b, int xO, int yO, int x, int у);

Параметры этой функции аналогичны параметрам функции Arc.

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

Функция RoundRect рисует прямоугольник с закругленными углами: BOOL RoundRect( HOC hdc, int I, int t, int r, int b, int w, int h);

Первые 5 параметров этой функции совпадают с параметрами функ­ции Rectangle. А параметры w и h задают соответственно ширину и вы­соту эллипса, дуги которого закругляют углы прямоугольника. В случае успешного выполнения функция возвращает ненулевое значение. Функ­ция игнорирует текущую позицию.

2.3. Интерфейс программы

Для выбора графических примитивов нужно нажать кнопку “Выбор” в главном окне программы. ( рис. 2.1.)

рис.2.1. Главное окно программы

После нажатия кнопки “Выбор” появится диалоговое окно (рис.2.2.) в котором можно выбрать любой графический примитив, из приведенных в списке.

рис.2.2. Диалоговое окно выбора графических примитивов

После того, как выбор будет закончен, надо нажать кнопку “Добавить”. После этого выбранные примитивы будут занесены в левое окно. В этом окне находятся те фигуры, с которыми можно будет работать после закрытия диалогового окна. В диалоговом окне выбора можно увидеть также кнопки “OK”, “Удалить” и “Отчистить”, назначение которых становится понятно по их названию. По закрытии диалогового окна, в главном окне программы, можно выбрать фигуры для прорисовки и нажать кнопку “Нарисовать”. Выбранные фигуры появятся в правой части экрана. Щелчок правой кнопки по рисунку выводит справку-описание в формате WINHELP по функциям API, использованным для создания выбранного объекта.

2.4. Требования к ПК

Задача реализуется на ПК с установленной операционной системой Windows 98, Windows Me, Windows 2000, Windows XP, Windows 2003. Для эксплуатации программного обеспечения необходимо использовать ПК класса Intel или AMD c минимальными характеристиками: тактовая частота микропроцессора 200 MГц, оперативная память - 64 Mб, видеокарта SVGA совместимая, с 4Мб оперативной памяти и 16бит цветопередача.


Страница: