Технический проект комплекса информационных технологий "Управление инфраструктурой железнодорожного транспорта" (Описание программного обеспечения системы), страница 10

–  для первого типа: GetFormHandleNN;

–  для второго типа: GetFormNN;

где NN –порядковый номер (число, количество знаков произвольно, без ведущих нулей).

Возврат дескриптора окна предусматривается для совместимости с Visual C++ и MFC (посредством методов Attach/Detach класса CWindow), а также для иных случаев, когда работа непосредственно с дескрипторам является единственно возможной.

Для приложений, реализованных на Delphi, используется функция, возвращающая созданную форму. Каждая такая форма должна являться наследником базового абстрактного класса, являющегося общим для всех библиотечных форм в составе АСУ-Ш-2 и включающего максимальный набор методов и свойств, которые могут быть реализованы в такой форме. Реализация всех методов в наследнике не является обязательной. Допускается существование более чем одного базового класса для библиотечных форм, однако общее их количество должно быть минимальным.

Библиотека должна учитывать возможность повторного входа в любую экспортируемую функцию.

Документируются методы и свойства базового класса (классов). Для каждого модуля документируются экспортируемые функции, для каждой формы, которая может быть возвращена в приложение, указываются реализованные методы.

В виде сервера автоматизации (exe). В таком виде реализуются модули, для которых может иметь смысл автономный запуск в качестве приложения. Для обеспечения возможности обращения из других приложений модуль должен быть реализован как автоматный OLE-сервер с набором свойств и методов, позволяющим реализовать программный интерфейс с вызывающим приложением. Минимальный набор свойств и методов приведен в таблице 13.

Таблица 13

Имя

Тип

Доступ

Описание

ApplicationИмя_
Приложение

Idispatch

R

Приложение

Caption

WideString

RW

Заголовок главного окна

Handle

Ole_Handle

R

Дескриптор окна главной формы

Top

Integer

RW

Вертикальная позиция левого верхнего угла главного окна

Left

Integer

RW

Горизонтальная позиция левого верхнего угла главного окна

Height

Integer

RW

Высота главного окна

Width

Integer

RW

Ширина главного окна

Visible

WordBool

RW

Видимость главного окна

Name

WideString

R

Описание версии приложения

Quit

Метод

Выход с отключением всех клиентов

Имя_формы

WordBool

RW

Признак разрешения показа конкретной формы

StatusEnabled

WordBool

RW

Признак разрешения показа строки состояния

HintEnabled

WordBool

RW

Признак разрешения показа подсказок

FlatButtonEnabled

WordBool

RW

Признак разрешения плоских кнопок

STARTFORM

Integer

W

Идентификатор автоматически стартующей формы

Документируются свойства и методы автоматного сервера.

В виде сервера приложений (exe). В таком виде могут быть реализованы приложения, работающие, как правило, в течение всего времени работы ПЭВМ и обслуживающие запросы других приложений по выполнению каких-либо действий, либо предоставляющие информацию одному и более приложениям как по запросу, так и без специального запроса от них. Сервер приложений может обслуживать приложения, работающие на других рабочих станциях локальной сети. Этот пункт не относится к серверам приложений, являющимся автоматными OLE-серверами.

Сервер приложений должен быть рассчитан на работу в реальном времени при минимальном использовании ресурсов ПЭВМ. Непосредственный вызов сервера приложений, как правило, не производится.

Документируются имя и класс главного окна сервера приложений и способ запроса и получения информации от него.


6.1.3.2 Способы обмена данными

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

Эти способы могут оказаться непригодными при передаче больших объемов информации, а также при обмене командами или данными с сервером приложений, не являющимся OLE-сервером. В таких случаях рекомендуется использование одного из следующих способов.

Обмен сообщениями Windows. Способ применим для сервера приложений, работающего на той же ПЭВМ, для передачи команд или для передачи и приема небольших объемов информации.

Для передачи команд и определения уникального сообщения для всей операционной системы применяется функция RegisterWindowMessage с параметром ('WM_User+512'). Для идентификации окон, на которые посылается сообщение, используется слово данных пользователя USERDATA = 512 (устанавливается функцией SetWindowLong через параметр nIndex= GWL_USERDATA.

Сообщения отправляются функцией PostMessage со следующими параметрами:

Msg                 = RegisterWindowMessage('WM_User+512')

wParam           = константа идентифицирующая сообщение

lParam             = параметр сообщения (необязателный)

Для обеспечения обновления информации в запущенных приложениях, главному окну приложения рекомендуется обрабатывать поступающие Win – сообщения АСУ-Ш-2, зарегистрированные RegisterWindowMessage('WM_User+512') и анализировать параметры wParam и lParam.

Для обмена информацией используются сообщения WM_COPYDATA. Документируются используемые сообщения и структура данных, передаваемых через сообщение WM_COPYDATA.