diff --git a/programs/develop/libraries/box_lib/trunk/doc/tooltip/tooltip.htm b/programs/develop/libraries/box_lib/trunk/doc/tooltip/tooltip.htm new file mode 100644 index 0000000000..e0ca1f4a24 --- /dev/null +++ b/programs/develop/libraries/box_lib/trunk/doc/tooltip/tooltip.htm @@ -0,0 +1,87 @@ + + +элемент Tooltip + + + + +

На главную ↑

+

Оглавление

+

Введение

+

Функции

+

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

+

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

+ +

Введение

+

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

+

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

+

Текст тултипа может быть многострочным, с разделителем код 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

+ + \ No newline at end of file