На главную ↑

Оглавление

Введение

Функции

Структура данных

Исходный код и примеры

Введение

Тултип - всплывающая подсказка, показывается при задержке указателя мыши над конкретной областью, обычно элементом управления.

Область контроля - прямоугольник с заданными координатами

Текст тултипа может быть многострочным, с разделителем код 13 (\r), произвольным размером шрифта.

В первой версии тултип выводится ниже курсора мыши и вправо. Учитывайте при планировании интерфейса.

Используется динамическая память, соответственно библиотека должны быть загружена с функциями

@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load

и куча должна быть инициализирована вызовом SysFn 68.11

Функции

Все функции используют x86-32 calling convention, stdcall.

Это означает, что регистры EAX, ECX, EDX могут не сохранять свои значения после вызова функций.

Примеры вызовов смотрите в программе - примере.

tooltip_init(ttip)

Параметр - указатель на первый в цепочке тултип.

Возврат EAX==1 при успешном выделениии памяти, 0 при сбое.

Вызывается один раз, инициализирует все тултипы, выделяя память и рассчитывая внутренние переменные.

tooltip_delete(ttip)

Параметр - указатель на первый в цепочке тултип.

Возврат - нет.

Освобождает выделенную память.

tooltip_test_show(ttip)

Параметр - указатель на первый в цепочке тултип.

Возврат - нет.

Показ нужного из всей цепочки тултипов при бездействии. Должна вызываться при бездействии или периодически для проверки таймера. Например при опросе событий функцией SysFn 23 (event 0).

tooltip_mouse(ttip)

Параметр - указатель на первый в цепочке тултип.

Возврат - нет.

Эта функция должна вызываться при событии мыши. Стирает тултип при выходе мыши из зоны контроля

get_font_size(color)

Параметр - цвет текста с размером шрифта, в формате функции SysFn 4.

Возврат - EAX = width shl 16 + height.

Декодирует из комбинированного цвета/размера ширину и высоту шрифта в пикселях

Структура тултипа

Макрос для создания структуры тултипа ниже, включен в box_lib.mac. Не забываем объединить тултипы в список.

struc tooltip txt, next, zone_x, zone_w, zone_y, zone_h, col_txt, col_bkg, tm_wait
{
    .txt     dd  txt   ; указатель на текст asciiz, разделитель \r 13
    .next    dd  next	; следующиий tooltip в цепочке или 0
    .zone_y  dw  zone_y   ; зона контроля (в 90% случаев совпадает с размером контрола)
    .zone_x  dw  zone_x   ;
    .zone_h  dw  zone_h   ;
    .zone_w  dw  zone_w   ;
    .col_txt dd  col_txt   ; цвет текста тултипа, включая размер SysFn4
    .col_bkg dd  col_bkg   ; цвет фона тултипа
    .tm_wait dw  tm_wait   ; время ожидания х10мс
;временные переменные
    .font_sz dd  ?   ; font size
    .mouse   dd  ?   ; предыдущее положение (x, y)
    .tm_strt dd  ?   ; время запуска таймера (входа мыши в зону) х10мс
    .video   dd  ?   ; память для сохраненного под тултипом
    .video_y dw  ?    ; координаты запомненной области экрана, или 0 если пусто
    .video_x dw  ?
    .video_h dw  ?    ; размер предрасчитывается при init
    .video_w dw  ?
}

Исходный код и примеры

Исходный код находится в библиотеке box_lib, файл tooltip.asm

Пример использования находится в box_lib\asm\trunk\tooltip_demo.asm

EOF