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

Описание пользователя

Глава 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( 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;    // Масштабный к-т окна (в долях единицы)
  } ;
  typedef  *;

Поля структуры имеют следующий смысл:

xy (int)
Координаты курсора мыши на рабочем поле окна подсистемы на момент вывода подсказки (уже с учетом масштаба подсистемы).
BlockXBlockY (int)
Координаты точки привязки блока на рабочем поле с учетом масштаба и возможной связи положения этого блока с переменными. Для блоков с векторной картинкой точка привязки – это положение начала координат этой картинки, для всех остальных – левый верхний угол прямоугольной области.
LeftTopWidthHeight (int)
Координаты левого верхнего угла (Left, Top) прямоугольной области, занимаемой блоком, ее ширина (Width) и высота (Height) в текущем масштабе с учетом возможной связи положения блока с его переменными. Соответствуют одноименным полям структуры RDS_PDRAWDATA.
HZLeftHZTopHZWidthHZHeight (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.


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