- •Лабораторные работы 5-6
- •Модель управления ресурсами в локальной вычислительной сети.
- •Int Next_top; /* Номер следующего узла */
- •Построение замкнутой модели многопользовательской информационной системы
- •1.3. Модель бизнес-процесса «эффективность предприятия»
- •2. Построение интерфейса пользователя
- •2.1. Построение диалогового окна настройки параметров модели.
- •6.2.Использование функционального окна визуализации работы модели.
- •Void *pointer; // Настраиваемый указатель любой области
- •Int next; // Номер «текущего» узла
- •Void funcwindow(struct fwcb*);
- •Void funcwindow(struct fwcb *s)
- •Int xL; // X левого верхнего угла эллипса
- •InvalidateRect(shwnd,null,1);
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 спланированного события