Приложения
Приложение А. Функции, константы и структуры RDS
А.2. События блока и связанные с ними описания
А.2.6. События пользовательского интерфейса и рисования внешнего вида блоков
А.2.6.11. RDS_BFM_MOUSEDOWN – нажатие кнопки мыши
Поток, в котором вызывается функция модели
Главный поток RDS.
Первый параметр функции модели (int CallMode)
Константа RDS_BFM_MOUSEDOWN.
Третий параметр функции модели (void *ExtParam)
Указатель на структуру описания события RDS_MOUSEDATA.
Возвращаемое функцией модели значение
| RDS_BFR_DONE | Нажатие обработано блоком. |
| RDS_BFR_NOTPROCESSED | Нажатие не обработано блоком, оно будет передано в родительскую подсистему, а затем, если и она его не обработает, в RDS. |
| RDS_BFR_SHOWMENU | Нажатие правой кнопки мыши обработано блоком, но, несмотря на это, нужно вывести контекстное меню. |
Примечания
Реакция на событие RDS_BFM_MOUSEDOWN вызывается при нажатии любой кнопки мыши на изображении блока в окне подсистемы, если одновременно выполняются следующие условия:
- RDS находится в режиме моделирования или расчета;
- изображение блока находится на видимом слое окна подсистемы, для которого разрешено редактирование;
- в параметрах блока разрешена реакция на мышь.
Кроме того, если блок захватил мышь (взведен флаг RDS_MOUSECAPTURE), реакция на это событие будет вызываться даже если курсор мыши покинет пределы изображения блока.
Блоки могут обрабатывать щелчки кнопок мыши только в режимах моделирования и расчета: в режиме редактирования мышь используется для редактирования схемы. Если изображения блоков перекрываются, нажатие кнопки мыши сначала будет передано в блок, изображение которого находится ближе всего к переднему плану. Если его модель не обработает нажатие, будет вызвана модель блока, находящегося дальше, и т.д. Если ни один блок не обработает нажатие, будет вызвана модель подсистемы для реакции на событие RDS_BFM_WINDOWMOUSEDOWN. Если же и подсистема не среагирует, нажатие будет обработано RDS (если нажата правая кнопка, будет показано контекстное меню). Реакция блоков на мышь подробно рассматривается в §2.12 руководства программиста. Следует помнить, что, в отличие от большинства других событий, при реакции на мышь возврат стандартной константы RDS_BFR_DONE сообщает RDS о том, что блок обработал действие пользователя. Таким образом, если разрешить в параметрах блока реакцию на мышь, блок начнет перехватывать все щелчки, пришедшиеся на его изображение, даже если не включать в модель реакции на события RDS_BFM_MOUSE*. Чтобы блок, которому разрешена реакция на мышь, был «прозрачным» для щелчков, его модель должна вернуть константу RDS_BFR_NOTPROCESSED (пример использования этой константы приведен в §2.12.3 руководства программиста). В реакции на нажатие правой кнопки модель может также вернуть константу RDS_BFR_SHOWMENU, информируя RDS о том, что, хотя нажатие обработано, необходимо все равно вывести контекстное меню блока. При нажатиях других кнопок возврат RDS_BFR_SHOWMENU аналогичен возврату RDS_BFR_NOTPROCESSED.
См. также
RDS_MOUSEDATA, RDS_BFM_MOUSEDBLCLICK, RDS_BFM_MOUSEUP, RDS_BFM_MOUSEMOVE, RDS_BFM_WINDOWMOUSEDOWN, RDS_BFM_WINDOWMOUSEUP, RDS_BFM_WINDOWMOUSEMOVE, RDS_BFM_WINDOWMOUSEDBLCLICK, RDS_BFM_MOUSESELECT.