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 @@ + +
+Тултип - всплывающая подсказка, показывается при задержке указателя мыши над конкретной областью, обычно элементом управления.
+Область контроля - прямоугольник с заданными координатами
+Текст тултипа может быть многострочным, с разделителем код 13 (\r), произвольным размером шрифта.
+В первой версии тултип выводится ниже курсора мыши и вправо. Учитывайте при планировании интерфейса.
+Используется динамическая память, соответственно библиотека должны быть загружена с функциями
+@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load+
и куча должна быть инициализирована вызовом SysFn 68.11
+ +Все функции используют x86-32 calling convention, stdcall.
+Это означает, что регистры EAX, ECX, EDX могут не сохранять свои значения после вызова функций.
+Примеры вызовов смотрите в программе - примере.
+ +Параметр - указатель на первый в цепочке тултип.
+Возврат EAX==1 при успешном выделениии памяти, 0 при сбое.
+Вызывается один раз, инициализирует все тултипы, выделяя память и рассчитывая внутренние переменные.
+ +Параметр - указатель на первый в цепочке тултип.
+Возврат - нет.
+Освобождает выделенную память.
+ +Параметр - указатель на первый в цепочке тултип.
+Возврат - нет.
+Показ нужного из всей цепочки тултипов при бездействии. +Должна вызываться при бездействии или периодически для проверки таймера. +Например при опросе событий функцией SysFn 23 (event 0).
+ +Параметр - указатель на первый в цепочке тултип.
+Возврат - нет.
+Эта функция должна вызываться при событии мыши. Стирает тултип при выходе мыши из зоны контроля
+ +Параметр - цвет текста с размером шрифта, в формате функции 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
+