Приложения
Приложение А. Функции, константы и структуры RDS
А.2. События блока и связанные с ними описания
А.2.7. События, связанные с изменением схемы пользователем
А.2.7.4. RDS_BFM_MOVED – перемещение блока
Поток, в котором вызывается функция модели
Главный поток RDS.
Первый параметр функции модели (int CallMode)
Константа RDS_BFM_MOVED.
Третий параметр функции модели (void *ExtParam)
Указатель на структуру описания события RDS_MOVEDATA.
Возвращаемое функцией модели значение
Не используется, можно возвращать любое значение.
Примечания
Событие RDS_BFM_MOVED возникает при любом изменении положения блока на рабочем поле подсистемы: при его перетаскивании пользователем, при задании его координат, при вызове сервисной функции для перемещения блока и т.п. Реакция на это событие может применяться, например, для синхронного перемещения группы блоков при перемещении одного из них. В параметре ExtParam передается указатель на структуру RDS_MOVEDATA:
typedef struct { RDSINT32 MoveReason; // Причина перемещения RDSINT32 OldX,OldY; // Старые координаты точки привязки RDSINT32 NewX,NewY; // Новые координаты точки привязки } RDS_MOVEDATA; typedef RDS_MOVEDATA *RDS_PMOVEDATA;
Поля структуры
- MoveReason (RDSINT32)
- Одна из стандартных констант, указывающих на причину изменения координат блока:
RDS_MR_SET Координаты блока установлены непосредственно: заданы пользователем в окне параметров, установлены сервисной функцией rdsMoveBlock и т.п. RDS_MR_DRAG Блок «перетащен» мышью. RDS_MR_KEYBOARD Выделенный в окне подсистемы блок перемещен нажатием курсорных клавиш. RDS_MR_UNDOREDO Ранее выполненное перемещение блока отменено или повторено пользователем. - OldX, OldY (RDSINT32)
- Координаты точки привязки блока до перемещения в масштабе 100%. Для блоков с векторной картинкой точка привязки – это положение начала координат этой картинки, для программно рисуемых блоков и блоков, изображаемых прямоугольником с текстом, это координаты левого верхнего угла изображения. Горизонтальная ось координат направлена вправо, вертикальная – вниз, начало координат – левый верхний угол рабочего поля.
- NewX, NewY (RDSINT32)
- Координаты точки привязки блока после перемещения в масштабе 100%.
См. также