Текущий раздел:

Описания RDS

Приложения

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

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

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

А.2.6.14. RDS_BFM_POPUPHINT – вывод всплывающей подсказки

# Приложения

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

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

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

##### А.2.6.14. RDS_BFM_POPUPHINT – вывод всплывающей подсказки

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

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

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

Константа RDS_BFM_POPUPHINT.

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

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

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

RDS_BFR_DONE | Необходимо вывести всплывающую подсказку (игнорируется, если строка подсказки не передана в RDS).
RDS_BFR_NOTPROCESSED | Всплывающую подсказку выводить не нужно.

Примечания

Реакция на событие RDS_BFM_POPUPHINT вызывается у блока, в параметрах которого разрешен вывод всплывающей подсказки, если курсор мыши задержался в пределах его изображения (время задержки определяется операционной системой). В этой реакции модель может передать RDS текст подсказки, которую необходимо вывести, при помощи сервисной функции rdsSetHintText, а также записать в поля переданной структуры RDS_POPUPHINTDATA параметры подсказки – размеры зоны, интервал гашения и т.д. Если функция модели не установит текст подсказки или передаст в функцию rdsSetHintText пустую строку, подсказка выведена не будет. Вывод всплывающих подсказок к блокам подробно рассмотрен в §2.11 руководства программиста.

В параметре ExtParam передается указатель на структуру RDS_POPUPHINTDATA, в которой содержатся текущие параметры изображения блока и через которую модель возвращает параметры показа подсказки, если это необходимо:

      typedef struct {
        RDSINT32 x,y;              // Координаты курсора мыши
        RDSINT32 BlockX,BlockY;    // Координаты точки привязки блока
        RDSINT32 Left,Top;         // Верхний левый угол изображения блока
        RDSINT32 Width,Height;     // Размеры изображения блока
        RDSINT32 HZLeft,HZTop,     // Возвращаемый размер зоны
        RDSINT32 HZWidth,HZHeight; // действия подсказки
        RDSINT32 ReshowTimeout;    // Возвращаемый интервал повторного вывода
        RDSINT32 HideTimeout;      // Возвращаемый интервал гашения
        RDSINT32 IntZoom;          // Масштаб окна в %
        double DoubleZoom;         // Масштабный к-т окна (в долях единицы)
      } RDS_POPUPHINTDATA;
      typedef RDS_POPUPHINTDATA *RDS_PPOPUPHINTDATA;

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

x, y(RDSINT32)
  Текущие координаты курсора мыши в окне подсистемы на момент возможного вывода подсказки.
BlockX, BlockY(RDSINT32)
  Координаты точки привязки изображения блока в текущем масштабе. Для блоков с векторной картинкой это положение начала координат этой картинки, для программно рисуемых блоков и блоков, изображаемых прямоугольником с текстом, это координаты левого верхнего угла изображения (горизонтальная ось координат направлена вправо, вертикальная – вниз, начало координат – левый верхний угол рабочего поля). Если положение блока связано с его переменными, значения BlockX и BlockY в этой структуре указываются уже с учетом значений этих переменных.
Left, Top(RDSINT32)
  Горизонтальная (Left) и вертикальная (Top) фактические координаты верхнего левого угла изображения блока в текущем масштабе на момент последней перерисовки окна подсистемы.
Width, Height(RDSINT32)
  Фактические ширина (Width) и высота (Height) изображения блока в текущем масштабе на момент последней перерисовки окна подсистемы.
HZLeft, HZTop, HZWidth, HZHeight(RDSINT32)
  Возвращаемая моделью зона действия подсказки: горизонтальная (HZLeft) и вертикальная (HZTop) координаты верхнего левого угла зоны, ее ширина (HZWidth) и высота (HZHeight). При выходе курсора мыши за пределы этой прямоугольной зоны будет запрошен повторный вывод подсказки – так можно разбить всю площадь блока на несколько участков и выводить в них разные подсказки. На момент вызова функции модели в этих полях записаны координаты и размеры всего изображения блока, поэтому, если модель ничего в них не изменит, весь блок будет считаться одной зоной.
ReshowTimeout(RDSINT32)
  Возвращаемое моделью время в миллисекундах после гашения подсказки, по истечении которого подсказку необходимо вывести снова. На момент вызова функции модели это поле имеет нулевое значение, что означает, что подсказка не будет выведена повторно до тех пор, пока курсор мыши не покинет зону ее действия.
HideTimeout(RDSINT32)
  Возвращаемое моделью время в миллисекундах после вывода подсказки, по истечении которого ее необходимо убрать с экрана. На момент вызова функции модели в это поле записано стандартное для операционной системы значение.
IntZoom(RDSINT32)
  Текущий масштаб окна подсистемы в процентах.
DoubleZoom(double)
  Текущий масштаб окна подсистемы в долях единицы: 1 для 100%, 2 для 200%, 0.5 для 50% и т.п.

См. также

rdsSetHintText.