Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6707 siemargl 1
2
3
элемент Tooltip
4
5
6
7
8

На главную ↑

9

Оглавление

10

Введение

11

Функции

12

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

13

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

14
 
15

Введение

16

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

17

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

18

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

19

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

20

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

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

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

23
 
24

Функции

25

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

26

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

27

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

28
 
29

tooltip_init(ttip)

30

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

31

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

32

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

33
 
34

tooltip_delete(ttip)

35

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

36

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

37

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

38
 
39

tooltip_test_show(ttip)

40

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

41

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

42

Показ нужного из всей цепочки тултипов при бездействии.

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

45
 
46

tooltip_mouse(ttip)

47

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

48

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

49

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

50
 
51

get_font_size(color)

52

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

53

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

54

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

55
 
56

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

57

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

58
struc tooltip txt, next, zone_x, zone_w, zone_y, zone_h, col_txt, col_bkg, tm_wait
59
{
60
    .txt     dd  txt   ; указатель на текст asciiz, разделитель \r 13
61
    .next    dd  next	; следующиий tooltip в цепочке или 0
62
    .zone_y  dw  zone_y   ; зона контроля (в 90% случаев совпадает с размером контрола)
63
    .zone_x  dw  zone_x   ;
64
    .zone_h  dw  zone_h   ;
65
    .zone_w  dw  zone_w   ;
66
    .col_txt dd  col_txt   ; цвет текста тултипа, включая размер SysFn4
67
    .col_bkg dd  col_bkg   ; цвет фона тултипа
68
    .tm_wait dw  tm_wait   ; время ожидания х10мс
69
;временные переменные
70
    .font_sz dd  ?   ; font size
71
    .mouse   dd  ?   ; предыдущее положение (x, y)
72
    .tm_strt dd  ?   ; время запуска таймера (входа мыши в зону) х10мс
73
    .video   dd  ?   ; память для сохраненного под тултипом
74
    .video_y dw  ?    ; координаты запомненной области экрана, или 0 если пусто
75
    .video_x dw  ?
76
    .video_h dw  ?    ; размер предрасчитывается при init
77
    .video_w dw  ?
78
}
79
80
 
81

82

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

83

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

84

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

85

EOF

86
87