Приложения
Приложение А. Функции, константы и структуры RDS
А.4. Структуры RDS
А.4.7. RDS_EDITORPARAMETERS – параметры окна подсистемы
Структура RDS_EDITORPARAMETERS используется для получения параметров окна подсистемы – размеров, положения, числа слоев и т.п. – при помощи сервисной функции rdsGetEditorParameters.
typedef struct { DWORD servSize; // Размер этой структуры RDSINT32 GridDx,GridDy; // Шаг сетки BOOL SnapToGrid; // Включена привязка к сетке BOOL DisplayGrid; // Изображается сетка COLORREF GridColor; // Цвет точек сетки BOOL Visible; // Окно редактора открыто RDSINT32 WinLeft,WinTop, // Размеры и положение окна RDSINT32 WinWidth,WinHeight; // RDSINT32 WorkWidth,WorkHeight; // Размеры рабочей области RDSINT32 ScrollX,ScrollY; // Позиция полос прокрутки double Zoom; // Масштаб COLORREF MainPointColor; // Цвет точек привязки блоков BOOL ShowBlockNames; // Показывать имена блоков BOOL ShowVarNames; // Показывать имена переменных RDSINT32 NumLayers; // Число слоев RDSINT32 CurLayerNum; // Номер текущего слоя RDSINT32 CurLayerId; // Идентификатор текущего слоя RDSINT32 NumConfigs; // Чило конфигураций слоев RDSINT32 CurConfig; // Номер текущей конфигурации BOOL PrintZoneActive; // Зона печати включена BOOL DisplayPrintZone; // Зона печати отображается RDSINT32 PZLeft,PZTop, // Размеры и положение зоны печати RDSINT32 PZWidth,PZHeight; // BOOL WinMaximized; // Окно развернуто на весь экран BOOL WinMinimized; // Окно свернуто DWORD RefreshDelay; // Задержка автоматического обновления // окна в режиме расчета COLORREF BlockNameColor; // Цвет имен блоков RDSINT32 BlockNameDistance; // Расстояние от блока до имени COLORREF BackgroundColor; // Цвет фона окна BOOL DefBackground; // В качестве цвета фона // окна выбран цвет окна Windows DWORD WindowReactions; // Битовые флаги реакции окна на // мышь и клавиатуру BOOL Wallpaper; // Включены обои BOOL WallpaperTile; // Обоями заполнено все рабочее поле RDSINT32 WallpaperWidth, // Размеры обоев RDSINT32 WallpaperHeight; // BOOL Dashboard; // В системе только неподвижные // неперекрывающиеся блоки } RDS_EDITORPARAMETERS; typedef RDS_EDITORPARAMETERS *RDS_PEDITORPARAMETERS;
Поля структуры
- servSize (DWORD)
- Размер этой структуры в байтах. Перед вызовом любой сервисной функции, работающей с этой структурой, полю servSize необходимо присвоить значение sizeof(RDS_EDITORPARAMETERS).
- GridDx, GridDy (RDSINT32)
- Шаг сетки окна по горизонтали (GridDx) и вертикали (GridDy). При включенной привязке к сетке влияет на перемещение блоков мышью при редактировании схемы. Шаг сетки указывается без учета масштаба – это именно шаг изменения координат блоков.
- SnapToGrid (BOOL)
- TRUE, если включена привязка к сетке, и FALSE, если выключена.
- DisplayGrid (BOOL)
- TRUE, если точки сетки изображаются в окне, и FALSE, если сетка невидима.
- GridColor (COLORREF)
- Цвет точек сетки.
- Visible (BOOL)
- TRUE, если окно подсистемы открыто, и FALSE, если оно закрыто. Параметры окна подсистемы можно получить и при закрытом окне – они хранятся в RDS и будут применены к окну в момент открытия.
- WinLeft, WinTop, WinWidth, WinHeight (RDSINT32)
- Горизонтальная (WinLeft) и вертикальная (WinTop) координаты левого верхнего угла окна подсистемы, а также его ширина (WinWidth) и высота (WinHeight) в точках экрана. Положение и размеры окна указываются с учетом его рамки и полосы заголовка, то есть это его внешние размеры. Эти поля можно использовать для привязки каких-либо вспомогательных окон к границам окна подсистемы.
- WorkWidth, WorkHeight (RDSINT32)
- Ширина (WorkWidth) и высота (WorkHeight) рабочего поля подсистемы, то есть пространства, на котором можно размещать блоки и связи. Размер рабочего поля указывается без учета масштаба. Если размеры рабочего поля в текущем масштабе больше размеров внутренней части окна, в окне будут отображаться полосы прокрутки.
- ScrollX, ScrollY (RDSINT32)
- Положение полос прокрутки окна в масштабе 100%. Фактически, это координата левой верхней точки рабочего поля, видимой в окне.
- Zoom (double)
- Текущий масштаб окна в долях единицы: 1 для 100%, 2 для 200%, 0.5 для 50% и т.п.
- MainPointColor (COLORREF)
- Цвет, которым изображается точка привязки картинки блока, если ее отображение разрешено в параметрах блока.
- ShowBlockNames (BOOL)
- TRUE, если в окне разрешено отображение имен блоков, и FALSE, если оно запрещено. Если отображение имени запрещено в параметрах самого блока, имя не будет показываться в окне независимо от значения этого поля.
- ShowVarNames (BOOL)
- TRUE, если в окне разрешено отображение имен переменных на концах связей, и FALSE, если оно запрещено. Если отображение имени запрещено в параметрах точки связи, имя не будет показываться в окне независимо от значения этого поля.
- NumLayers (RDSINT32)
- Общее число слоев в подсистеме.
- CurLayerNum (RDSINT32)
- Порядковый номер текущего слоя в текущей конфигурации слоев – чем меньше номер, тем ближе слой к переднему плану. В разных конфигурациях слоев одни и те же слои могут иметь разные порядковые номера. Это поле может принимать значения от 0 до NumLayers−1.
- CurLayerId (RDSINT32)
- Идентификатор текущего слоя. Слой имеет один и тот же идентификатор во всех конфигурациях слоев. Именно эти идентификаторы указываются в сервисных функциях работы со слоями, структуре описания блока RDS_BLOCKDESCRIPTION и структуре описания связи RDS_CONNDESCRIPTION (поле LayerId).
- NumConfigs (RDSINT32)
- Общее число конфигураций слоев в подсистеме.
- CurConfig (RDSINT32)
- Порядковый номер текущей конфигурации в списке конфигураций слоев. Это поле может принимать значения от 0 до NumConfigs−1.
- PrintZoneActive (BOOL)
- TRUE, если в подсистеме активна зона печати (прямоугольная область, которой ограничивается выводимая на печать или сохраняемая в виде растрового рисунка часть рабочего поля подсистемы), FALSE в противном случае.
- DisplayPrintZone (BOOL)
- TRUE, если зона печати отображается в окне подсистемы, и FALSE, если ее отображение выключено. Зона печати может не отображаться, но быть при этом активной.
- PZLeft, PZTop, PZWidth, PZHeight (RDSINT32)
- Горизонтальная (PZLeft) и вертикальная (PZTop) координаты левого верхнего угла зоны печати, ее ширина (PZWidth) и высота (PZHeight). Положение и размеры зоны указываются в координатах рабочего поля, то есть в масштабе 100%.
- WinMaximized (BOOL)
- TRUE, если окно подсистемы развернуто на весь экран, FALSE в противном случае.
- WinMinimized (BOOL)
- TRUE, если окно подсистемы свернуто, FALSE в противном случае.
- RefreshDelay (DWORD)
- Интервал (в миллисекундах) автоматического обновления окна в режиме расчета, или 0, если автоматическое обновление выключено.
- BlockNameColor (COLORREF)
- Цвет, которым в окне отображаются имена блоков.
- BlockNameDistance (RDSINT32)
- Интервал в точках экрана в масштабе 100% между изображением блока и его именем. Это значение используется по умолчанию, пользователь может перетащить имя блока вручную в произвольное место окна. Параметры отображения имени конкретного блока указываются в структуре его описания (поля NamePos, NameDx и NameDy).
- BackgroundColor (COLORREF)
- Цвет фона рабочего поля подсистемы.
- DefBackground (BOOL)
- TRUE, если в качестве цвета фона рабочего поля установлен стандартный цвет окна Windows, и FALSE, если цвет задан пользователем вручную. Подсистемы, для которых установлен стандартный цвет рабочего поля, могут выглядеть по-разному на разных машинах.
- WindowReactions (DWORD)
- Битовые флаги, определяющие возможность реакции окна подсистемы на мышь и клавиатуру, если
соответствующие события не были перехвачены внутренними блоками подсистемы:
RDS_BDF_MOUSEEVENTS Функция модели подсистемы будет вызывается при нажатии и отпускании кнопок мыши и перемещении курсора с нажатыми кнопками в пределах рабочего поля (события RDS_BFM_WINDOWMOUSEDOWN, RDS_BFM_WINDOWMOUSEUP, RDS_BFM_WINDOWMOUSEDBLCLICK, RDS_BFM_WINDOWMOUSEMOVE). RDS_BDF_FREEMOUSEMOVE Функция модели подсистемы вызывается при перемещении курсора мыши в пределах рабочего поля (событие RDS_BFM_WINDOWMOUSEMOVE) даже тогда, когда ни одна из кнопок не нажата (только при установленном флаге RDS_BDF_MOUSEEVENTS). RDS_BDF_KBDEVENTS Функции модели подсистемы разрешена реакция на клавиатуру (события RDS_BFM_WINDOWKEYDOWN и RDS_BFM_WINDOWKEYUP). - Wallpaper (BOOL)
- TRUE, если на рабочем поле изображаются растровые «обои», и FALSE в противном случае.
- WallpaperTile (BOOL)
- TRUE, если «обоями» заполнено все рабочее поле подсистемы, FALSE, если они изображаются только в его левом верхнем углу.
- WallpaperWidth, WallpaperHeight (RDSINT32)
- Ширина (WallpaperWidth) и высота (WallpaperHeight) растрового изображения «обоев». Следует помнить, что при изменении масштаба подсистемы размер растрового изображения обоев не изменяется.
- Dashboard (BOOL)
- TRUE, если для подсистемы установлен флаг «в подсистеме только неподвижные не перекрывающиеся блоки» (то есть включена оптимизация рисования, см. §2.10.2 руководства программиста), и FALSE, если этот флаг не установлен.
Примеры
Примеры использования структуры RDS_EDITORPARAMETERS приведены в §2.10.4 и §2.12.5 руководства программиста.
См. также