Навигация:
<< >> Оглавление Указатель

Приложения

Приложение А. Функции, константы и структуры RDS

Описываются сервисные функции, экспортированные из модуля «rds.exe», используемые в них структуры и константы. Применение этих функций для создании моделей блоков описывается в главе 2 руководства программиста, для создания модулей автоматической компиляции моделей – в главе 3 там же.

А.1. Типы параметров

Описываются основные типы, используемые в моделях и дополнительных модулях для взаимодействия с RDS.

А.1.1. Идентификаторы объектов и вспомогательные типы

Схема в RDS состоит из множества различных объектов: блоков, связей, переменных, таймеров и т.п. Каждый из таких объектов имеет уникальный идентификатор, который нужно указывать в сервисных функциях для ссылки на конкретный объект, с которым нужно произвести то или иное действие. Большинство этих идентификаторов представляют собой указатели на какие-либо данные (тип LPVOID Windows API), но, для лучшей читаемости исходных текстов программ, в файле «RdsDef.h» для них оператором typedef введены специальные типы:

Тип Объект
RDS_BHANDLE Блок в схеме, независимо от его типа (простой блок, подсистема, внешний вход или выход, ввод шины). Используется во всех сервисных функциях, получающих или устанавливающих параметры блоков. Модель блока всегда имеет доступ к идентификатору своего блока и его родительской подсистемы через структуру данных блока RDS_BLOCKDATA.
RDS_CHANDLE Связь или шина в схеме. Используется во всех сервисных функциях, получающих или устанавливающих параметры связей и шин.
RDS_TIMERID Программируемый таймер блока. Используется в функциях работы с таймерами, в реакциях на событие RDS_BFM_TIMER и RDS_BFM_WINREFRESH.
RDS_MENUITEM Пункт системного или контекстного меню, добавленный моделью блока. Используется в сервисных функциях работы с меню.
RDS_VHANDLE Статическая или динамическая переменная блока. Используется в некоторых сервисных функциях для получения описания переменных и их редактирования. Для доступа к значениям переменных, как правило, не используется (см. §2.5 и §2.6 руководства программиста).
RDS_HOBJECT Вспомогательный объект RDS. Вспомогательные объекты служат для различных целей: редактирования связей, разбора текста, открытия окон и т.п., но все они имеют этот тип.
RDS_NETSTATION Одна из машин с запущенной копией RDS, подключенная к серверу. Используется для указания машины при отправке данных по сети конкретному блоку функцией rdsNetSendData и в реакциях на события RDS_BFM_NETDATARECEIVED и RDS_BFM_NETERROR.
RDS_NETBLOCK Блок на одной из машин с запущенной копией RDS, подключенной к серверу. Используется для указания блока при отправке данных по сети конкретному блоку функцией rdsNetSendData и в реакциях на события RDS_BFM_NETDATARECEIVED и RDS_BFM_NETERROR. Не взаимозаменяем с RDS_BHANDLE – последний может использоваться только в качестве идентификатора блока в пределах одной схемы на одной машине.
RDS_COMPHANDLE Модуль автоматической компиляции. Используется в сервисных функциях, работающих с автокомпилируемой моделью, для указания конкретного модуля.
RDS_MODELHANDLE Автоматически компилируемая модель. Используется в сервисных функциях, работающих с автокомпилируемой моделью, для указания конкретной модели.

Для взаимодействия с Windows API многие сервисные функции и структуры работают со значениями следующих, стандартных для Windows, типов (а также и их «псевдонимов», введенных специально для RDS):

Тип Объект
BOOL Логическое значение, может принимать значения TRUE (истина) или FALSE (ложь). Этот тип эквивалентен стандартному типу C «int».
BYTE Целая переменная, занимающая один байт. Этот тип эквивалентен стандартному типу C «unsigned char». Может принимать значения от 0 до 255.
COLORREF Тридцатидвухбитное целое число, описывающее цвет. Младший байт числа содержит интенсивность красного канала (в диапазоне от 0 до 255), второй байт – интенсивность зеленого, третий байт – интенсивность синего, четвертый (старший) байт всегда нулевой. Таким образом, число 0xFF0000 соответствует синему цвету, 0xFFFFFF – белому, 0 – черному.
DWORD Тридцатидвухбитное беззнаковое целое число (unsigned long). Может принимать значения от 0 до 4294967295. В RDS достаточно часто используется для хранения различных битовых флагов или размеров областей памяти.
HBITMAP Дескриптор загруженного в память растрового рисунка. В RDS используется только в функции rdsRegisterWindow.
HDC Контекст устройства (device context) Windows. Контексты устройств используются в графических функциях Windows API для указания объекта (например, окна), на котором производится построение изображения.
HINSTANCE Дескриптор загруженного в память модуля, например, DLL. Фактически, это базовый адрес модуля, но в функциях Windows API он часто используется просто как идентификатор этого модуля.
HWND Дескриптор окна Windows. Такие дескрипторы используются в функциях Windows API, выполняющих различные действия с окнами.
LOGFONT, LOGFONTA, LOGFONTW Структура, содержащая описание шрифта Windows. Ее поля подробно описаны в руководстве по Windows API. В RDS она используется не очень широко.
LPSTR, RDSSTR, RDSVSTR, RDSCSTR Указатель на строку байтов, завершающуюся нулевым байтом. Первые три типа эквивалентны стандартному типу C «char*». Тип «RDSCSTR» эквивалентен типу «const char*». В RDS строки этих типов всегда считаются имеющими кодировку UTF8. Следует помнить, что для символов национальных алфавитов один символ может занимать несколько последовательных байтов.
LPWSTR, RDSWSTR, RDSWVSTR, RDSWCSTR Указатель на строку в кодировке UTF16, завершающуюся нулевым кодом. Первые три типа эквивалентны стандартному типу C «wchar_t*». Тип «RDSWCSTR» эквивалентен типу «const wchar_t*».
RDSXSTR, RDSXVSTR, RDSXCSTR Указатель на строку в кодировке UTF8 или UTF16 в зависимости от наличия макроопределения RDS_UTF16DEFAULT (см. приложение А.1.3). В типе «RDSXCSTR» к строке добавлен модификатор «const».
RDSXCHAR Один символ текста в кодировке UTF8 или UTF16 в зависимости от наличия макроопределения RDS_UTF16DEFAULT. Эквивалентен типу «char», если кодировка по умолчанию – UTF8, и «wchar_t», если кодировка – UTF16.
LPVOID Указатель на некоторый объект в памяти без уточнения типа этого объекта. Этот тип эквивалентен стандартному типу C «void*».
POINT Структура, описывающая точку с двумя целыми координатами (поля x и y).
RECT Структура, описывающая прямоугольник через целые координаты его левой верхней (поля left и top) и правой нижней (поля right и bottom) точек.

В сервисных функциях и структурах RDS также используются следующие обозначения-синонимы для стандартных типов Windows и языка C:

Описание в RDS Стандартное описание Назначение
RDSBYTES BYTE*, unsigned char* Указатель на массив байтов.
RDSINT32 int Целая переменная со знаком, занимающая тридцать два бита (четыре байта).
RDSCALL CALLBACK, APIENTRY, __stdcall Тип вызова всех сервисных функций RDS и всех функций обратного вызова, используемых в моделях блоков и модулях автокомпиляции. Аргументы функции передаются в стеке справа налево, стек освобождается вызванной функцией.
RDS_SHORT short int Двухбайтовое целое число со знаком. В RDS предусмотрен такой тип переменных блока, больше этот тип нигде не используется.
RDS_PCOLORREF COLORREF*, LPCOLORREF Указатель на тридцатидвухбитное число, описывающее цвет (COLORREF).


<< >> Оглавление Указатель