Описание пользователя
Глава 3. Использование стандартных модулей автокомпиляции
§3.7. Краткий перечень вводимых в модель описаний и реакций на события
§3.7.11. Прочие реакции
§3.7.11.5. Всплывающая подсказка
Это событие возникает у блока, в параметрах которого разрешен вывод всплывающей подсказки, если курсор мыши задержался в пределах его изображения (время задержки определяется Windows). В реакции на него модель формирует и передает RDS текст подсказки, которую нужно показать пользователю. Примеры моделей, выводящих всплывающие подсказки к блокам, приведены в §3.6.9.
Текст реакции на вывод подсказки вводится на вкладке «» левой панели редактора модели: раздел «», подраздел «». В классе блока для нее создается функция с именем rdsbcppPopupHint следующего вида:
// Popup hint text and parameters setup void rdsbcppBlockClass::rdsbcppPopupHint(RDS_PPOPUPHINTDATA HintData,int &Show) { … пользовательский текст реакции … }
Параметр функции MessageData – это указатель на структуру типа RDS_POPUPHINTDATA, содержащую текущие параметры изображения блока, через которую модель возвращает параметры показа подсказки, если это необходимо:
typedef struct {
int x,y; // Координаты курсора мыши
int BlockX,BlockY; // Координаты точки привязки блока
int Left,Top; // Верхний левый угол изображения блока
int Width,Height; // Размеры изображения блока
int HZLeft,HZTop, // Возвращаемый размер зоны
HZWidth,HZHeight; // действия подсказки
int ReshowTimeout; // Возвращаемый интервал повторного вывода
int HideTimeout; // Возвращаемый интервал гашения
int IntZoom; // Масштаб окна в %
double DoubleZoom; // Масштабный к-т окна (в долях единицы)
} RDS_POPUPHINTDATA;
typedef RDS_POPUPHINTDATA *RDS_PPOPUPHINTDATA;
Поля структуры имеют следующий смысл:
- x, y (int)
- Координаты курсора мыши на рабочем поле окна подсистемы на момент вывода подсказки (уже с учетом масштаба подсистемы).
- BlockX, BlockY (int)
- Координаты точки привязки блока на рабочем поле с учетом масштаба и возможной связи положения этого блока с переменными. Для блоков с векторной картинкой точка привязки – это положение начала координат этой картинки, для всех остальных – левый верхний угол прямоугольной области.
- Left, Top, Width, Height (int)
- Координаты левого верхнего угла (Left, Top) прямоугольной области, занимаемой блоком, ее ширина (Width) и высота (Height) в текущем масштабе с учетом возможной связи положения блока с его переменными. Соответствуют одноименным полям структуры RDS_PDRAWDATA.
- HZLeft, HZTop, HZWidth, HZHeight (int)
- Возвращаемая моделью зона действия подсказки: горизонтальная (HZLeft) и вертикальная (HZTop) координаты верхнего левого угла зоны, ее ширина (HZWidth) и высота (HZHeight). При выходе курсора мыши за пределы этой прямоугольной зоны будет запрошен повторный вывод подсказки. По умолчанию в этих полях записаны координаты и размер всей прямоугольной области блока, то есть они совпадают с полями Left, Top, Width и Height соответственно, поэтому подсказка для любой точки его изображения будет одной и той же. Модель может записать в эти поля другие значения, чтобы при выходе курсора из указанной зоны можно было вывести другую подсказку.
- ReshowTimeout (int)
- Возвращаемое моделью время в миллисекундах после гашения подсказки, по истечении которого подсказку необходимо вывести снова. По умолчанию в этом поле записан ноль – подсказка не будет выведена повторно до тех пор, пока курсор мыши не покинет зону ее действия.
- HideTimeout (int)
- Возвращаемое моделью время в миллисекундах после вывода подсказки, по истечении которого ее необходимо убрать с экрана. По умолчанию в этом поле записано стандартное для Windows значение.
- IntZoom (int)
- Текущий масштаб окна родительской подсистемы блока в процентах (используется крайне редко).
- DoubleZoom (double)
- Текущий масштаб окна родительской подсистемы блока в долях единицы: 1 – 100%, 0.5 – 50%, 2 – 200% и т.п. Соответствует одноименному полю структуры RDS_PDRAWDATA.
Для возврата в RDS сформированного текста всплывающей подсказки используется специальная функция rdsSetHintText.
Второй параметр функции реакции – это ссылка на целую переменную Show, через которую модель блока может запретить вывод подсказки: если записать в эту переменную константу RDS_BFR_NOTPROCESSED вместо исходно содержащейся в ней RDS_BFR_DONE, подсказка выведена не будет. Если в реакции на событие не будет вызвана функция rdsSetHintText, то есть текст подсказки не будет передан в RDS, подсказка тоже не появится на экране.
При написании моделей блоков без использования модуля автокомпиляции выводу всплывающей подсказки соответствует константа RDS RDS_BFM_POPUPHINT.