Скачиваний:
58
Добавлен:
06.02.2016
Размер:
524.8 Кб
Скачать

6.2.Использование функционального окна визуализации работы модели.

Часто необходимо сделать так, чтобы конечный пользователь выдел информацию в проблемно-ориентированном понятном ему виде. Такая информация может представлять собой изменяющиеся таблички, графики, перемещающиеся по экрану изображения (например, автомобили). Такой пользователь не будет изучать моделирующую систему. Поэтому для него средствами Visual C++ создается специальная функциональная программа funcwindow, которая помещается в динамически вызываемую библиотеку Windows (dll-библиотеку). Обращение к такой библиотеке производится после каждого события в модели. После первого события она загружается в оперативную память. Типовые операторы Visual C++ , используемые при создании такого окна, приведены в HELP.

В качестве примера можно рассмотреть полезную программу – «часы моделирования». Общий вид рисунка, появляющегося в правом верхнем углу такого окна, показан на рис. 272. Как только очередной интервал моделирования превзойдет 1% модельного времени, эта программа переформировывает содержание функционального окна. В результате можно наблюдать эффект анимации. В HELP приведены типовые функции C++, используемые при создании подобных окон.

Программа функционального окна получает в качестве параметра область памяти struct fwcb, в которой размещены все необходимые оперативные данные на момент последнего события, которое произошло в модели. Адрес этой области памяти содержится в параметре s, передаваемом в программу funcwindow. Ее структура показана ниже.

struct fwcb // БЛОК УПРАВЛЕНИЯ ФУНКЦИОНАЛЬНЫМ ОКНОМ

{

Void *pointer; // Настраиваемый указатель любой области

LONG mywndproc; // Адрес процедуры функционального окна

HWND hwnd; // Дескриптор функционального окна приложения

HDC hdc; // DC устройства

HDC memdc; // DC виртуального окна

HFONT hOldf; // Старый шрифт

HFONT hNewf; // Новый шрифт

HBITMAP hbit; // Растр виртуальное окно

HBRUSH hbrush; // Рабочая кисть

HBRUSH hOldbrush; // Дескриптор прежней кисти

HBRUSH hHollowbrush; // Прозрачная кисть

HBRUSH hWhitebrush; // Белая кисть

HBRUSH hBlackbrush; // Черная кисть

HBRUSH hRedbrush; // Красная кисть

HBRUSH hGreenbrush; // Зеленая кисть

HBRUSH hBluebrush; // Синяя кисть

HBRUSH hYelloybrush; // Жёлтая кисть

HBRUSH hMagentabrush; // Фиолетовая кисть

HBRUSH hCyanbrush; // Бирюзовая кисть

HPEN hOldpen; // Дескриптор прежнего пера

HPEN hWhitepen; // Белое перо

HPEN hBlackpen; // Черное перо

HPEN hRedpen; // Красное перо

HPEN hGreenpen; // Зеленое перо

HPEN hBluepen; // Синее перо

HPEN hYelloypen; // Жёлтое перо

HPEN hMagentapen; // Фиолетовое перо

HPEN hCyanpen; // Бирюзовое перо

double timer; // Модельный таймер

float tmax; // Время моделирования

long nd; // Число событий в модели

struct kcb *addr[pool]; // Массив указателей узлов

struct tcb *t; // Адрес продвигаемого тpaнзaктa

struct ecb *e; // Адрес вновь образованного ecb

struct ecb *w; // Адрес ecb спланированного события

Соседние файлы в папке Лабораторные_занятия