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

Приложения

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

А.2. События блока и связанные с ними описания

А.2.6. События пользовательского интерфейса и рисования внешнего вида блоков

А.2.6.10. RDS_BFM_MOUSEDBLCLICK – двойной щелчок мыши

Поток, в котором вызывается функция модели

Главный поток RDS.

Первый параметр функции модели (int CallMode)

Константа RDS_BFM_MOUSEDBLCLICK.

Третий параметр функции модели (void *ExtParam)

Указатель на структуру описания события RDS_MOUSEDATA.

Возвращаемое функцией модели значение

RDS_BFR_DONE Двойной щелчок обработан блоком.
RDS_BFR_NOTPROCESSED Двойной щелчок не обработан блоком, он будет передан в родительскую подсистему, а затем, если и она его не обработает, в RDS.

Примечания

Реакция на событие RDS_BFM_MOUSEDBLCLICK вызывается при двойном щелчке на изображении блока в окне подсистемы, если одновременно выполняются следующие условия:

Блоки могут обрабатывать щелчки кнопок мыши только в режимах моделирования и расчета: в режиме редактирования мышь используется для редактирования схемы. Если изображения блоков перекрываются, двойной щелчок мыши сначала будет передан в блок, изображение которого находится ближе всего к переднему плану. Если его модель не обработает двойной щелчок, будет вызвана модель блока, находящегося дальше, и т.д. Если ни один блок не обработает двойной щелчок, будет вызвана модель подсистемы для реакции на событие RDS_BFM_WINDOWMOUSEDBLCLICK. Если же и подсистема не среагирует на двойной щелчок, он будет обработан RDS (будет включен режим редактирования и, если щелчок пришелся на блок, будет открыто окно его параметров или вызвана функция настройки). Реакция блоков на мышь подробно рассматривается в §2.12 руководства программиста. Следует помнить, что, в отличие от большинства других событий, при реакции на мышь возврат стандартной константы RDS_BFR_DONE сообщает RDS о том, что блок обработал действие пользователя. Таким образом, если разрешить в параметрах блока реакцию на мышь, блок начнет перехватывать все щелчки, пришедшиеся на его изображение, даже если не включать в модель реакции на события RDS_BFM_MOUSE*. Чтобы блок, которому разрешена реакция на мышь, был «прозрачным» для щелчков, его модель должна вернуть константу RDS_BFR_NOTPROCESSED (пример использования этой константы приведен в §2.12.3 руководства программиста).

Для описания произошедшего события служит структура RDS_MOUSEDATA (она используется и в других событиях реакции на мышь):

  typedef struct {
     x,y;           // Координаты курсора мыши
     BlockX,BlockY; // Координаты точки привязки блока
     Left,Top;      // Верхний левый угол изображения блока
     Width,Height;  // Размеры изображения блока
     IntZoom;       // Масштаб окна подсистемы в %
     Button;           // Кнопка мыши (RDS_M*)
     Shift;            //  (RDS_M*, RDS_K*)
     BlockName;         // Действие на имени блока
    double DoubleZoom;      // Масштабный к-т окна (в долях единицы)
     MouseEvent;    // Событие
     Viewport;      // Устаревшее, больше не используется
  } RDS_MOUSEDATA;
  typedef RDS_MOUSEDATA *RDS_PMOUSEDATA;

Поля структуры

xy (RDSINT32)
Координаты курсора мыши в окне подсистемы на момент возникновения события.
BlockXBlockY ()
Координаты точки привязки изображения блока в текущем масштабе. Для блоков с векторной картинкой это положение начала координат этой картинки, для программно рисуемых блоков и блоков, изображаемых прямоугольником с текстом, это координаты левого верхнего угла изображения (горизонтальная ось координат направлена вправо, вертикальная – вниз, начало координат – левый верхний угол рабочего поля). Если положение блока связано с его переменными, значения BlockX и BlockY в этой структуре указываются уже с учетом значений этих переменных. При реакции на события RDS_BFM_WINDOWMOUSE* эти поля не используются.
LeftTop ()
Горизонтальная (Left) и вертикальная (Top) фактические координаты верхнего левого угла изображения блока в текущем масштабе на момент последней перерисовки окна подсистемы. При реакции на события RDS_BFM_WINDOWMOUSE* эти поля не используются.
WidthHeight ()
Фактические ширина (Width) и высота (Height) изображения блока в текущем масштабе на момент последней перерисовки окна подсистемы. При реакции на события RDS_BFM_WINDOWMOUSE* эти поля не используются.
IntZoom ()
Текущий масштаб окна подсистемы в процентах.
Button (DWORD)
Кнопка мыши, нажатие или отпускание которой вызвало событие:
RDS_MLEFTBUTTON Левая кнопка мыши.
RDS_MRIGHTBUTTON Правая кнопка мыши.
RDS_MMIDDLEBUTTON Средняя кнопка мыши.
Shift ()
Битовые флаги, описывающие состояние специальных клавиш клавиатуры и кнопок мыши в момент возникновения события.
BlockName (BOOL)
Событие произошло из-за действий с отображаемым именем блока, а не с его изобрадением. Это возможно только в том случае, если модель блока взвела флаг RDS_NAMEMOUSEREACTION.
DoubleZoom (double)
Текущий масштаб окна подсистемы в долях единицы: 1 для 100%, 2 для 200%, 0.5 для 50% и т.п.
MouseEvent ()
Действие пользователя, которое привело к возникновению события. В реакциях на события RDS_BFM_MOUSE* дублирует параметр CallMode функции модели. В реакциях подсистем RDS_BFM_WINDOWMOUSE* в это поле записывается идентификатор события, близкого по смыслу к произошедшему событию:
Событие CallMode Поле KeyEvent
Нажатие кнопки мыши на изображении блока RDS_BFM_MOUSEDOWN RDS_BFM_MOUSEDOWN
Отпускание кнопки мыши на изображении блока RDS_BFM_MOUSEUP RDS_BFM_MOUSEUP
Перемещение курсора мыши над изображением блока RDS_BFM_MOUSEMOVE RDS_BFM_MOUSEMOVE
Двойной щелчок на изображении блока RDS_BFM_MOUSEDBLCLICK RDS_BFM_MOUSEDBLCLICK
Нажатие кнопки мыши на свободном месте окна подсистемы RDS_BFM_WINDOWMOUSEDOWN RDS_BFM_MOUSEDOWN
Отпускание кнопки мыши на свободном месте окна подсистемы RDS_BFM_WINDOWMOUSEUP RDS_BFM_MOUSEUP
Перемещение курсора мыши в окне подсистемы RDS_BFM_WINDOWMOUSEMOVE RDS_BFM_MOUSEMOVE
Двойной щелчок на свободном месте окна подсистемы RDS_BFM_WINDOWMOUSEDBLCLICK RDS_BFM_MOUSEDBLCLICK
Проверка возможности выбора блока щелчком мыши RDS_BFM_MOUSESELECT RDS_BFM_MOUSESELECT

См. также

RDS_BFM_MOUSEDOWN, RDS_BFM_MOUSEUP, RDS_BFM_MOUSEMOVE, RDS_BFM_WINDOWMOUSEDOWN, RDS_BFM_WINDOWMOUSEUP, RDS_BFM_WINDOWMOUSEMOVE, RDS_BFM_WINDOWMOUSEDBLCLICK.


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