Rev 4492 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4491 | leency | 1 | struct array_link { |
2 | dword link, text; |
||
3 | int x,y,w,h; |
||
4 | }; |
||
4488 | leency | 5 | |
6 | struct LinksArray |
||
7 | { |
||
4493 | leency | 8 | array_link links[200]; |
9 | char page_links[64000]; |
||
4491 | leency | 10 | dword buflen; |
11 | int count, active; |
||
12 | |||
13 | void Hover(); |
||
14 | void AddLink(); |
||
15 | void AddText(); |
||
4488 | leency | 16 | dword GetURL(); |
17 | void Clear(); |
||
4491 | leency | 18 | }; |
4488 | leency | 19 | |
4491 | leency | 20 | void LinksArray::AddLink(dword new_link, int link_x, link_y) |
4488 | leency | 21 | { |
4491 | leency | 22 | links[count].x = link_x; |
23 | links[count].y = link_y; |
||
24 | |||
25 | links[count].link = buflen; |
||
26 | strcpy(buflen, new_link); |
||
27 | buflen += strlen(new_link)+1; |
||
28 | count++; |
||
4488 | leency | 29 | } |
30 | |||
4491 | leency | 31 | void LinksArray::AddText(dword new_text, int link_w, link_h) |
32 | { |
||
33 | if (count<1) return; |
||
34 | links[count-1].w = link_w; |
||
35 | links[count-1].h = link_h; |
||
36 | |||
37 | links[count-1].text = buflen; |
||
38 | strcpy(buflen, new_text); |
||
39 | buflen += strlen(new_text)+1; |
||
40 | } |
||
41 | |||
4488 | leency | 42 | dword LinksArray::GetURL(int id) |
43 | { |
||
4491 | leency | 44 | return links[id].link; |
45 | } |
||
46 | |||
47 | void LinksArray::Clear() |
||
48 | { |
||
4493 | leency | 49 | int i; |
50 | for (i=0; i<=count; i++) DeleteButton(i+400); |
||
4491 | leency | 51 | buflen = #page_links; |
52 | count = 0; |
||
53 | active = -1; |
||
54 | } |
||
55 | |||
4492 | leency | 56 | void LinksArray::Hover(dword mx, my, link_col_in, link_col_a, bg_col) |
4491 | leency | 57 | { |
58 | int i; |
||
59 | if (active>=0) |
||
4488 | leency | 60 | { |
4492 | leency | 61 | //WriteText(links[active].x,links[active].y, 0x80, link_col_in, links[active].text); |
4491 | leency | 62 | DrawBar(links[active].x,links[active].y+8,links[active].w,1, link_col_in); |
63 | active = -1; |
||
64 | } |
||
65 | for (i=0; i |
||
66 | { |
||
67 | if (mx>links[i].x) && (my>links[i].y) && (mx |
||
4488 | leency | 68 | { |
4492 | leency | 69 | //WriteText(links[i].x,links[i].y, 0x80, link_col_a, links[i].text); |
70 | DrawBar(links[i].x,links[i].y+8,links[i].w,1, bg_col); |
||
4491 | leency | 71 | active = i; |
72 | return; |
||
4488 | leency | 73 | } |
74 | } |
||
75 | } |
||
76 | |||
4491 | leency | 77 | |
4493 | leency | 78 | LinksArray PageLinks; |
79 | |||
80 | |||
81 | /* |
||
82 | ------------------ Подфункция 4 - загрузить курсор ------------------- |
||
83 | Параметры: |
||
84 | * eax = 37 - номер функции |
||
85 | * ebx = 4 - номер подфункции |
||
86 | * dx = источник данных: |
||
87 | * dx = LOAD_FROM_FILE = 0 - данные в файле |
||
88 | * ecx = указатель на полный путь к файлу курсора |
||
89 | * файл курсора должен быть в формате .cur, стандартном для |
||
90 | MS Windows, причём размером 32*32 пикселя |
||
91 | * dx = LOAD_FROM_MEM = 1 - данные файла уже загружены в память |
||
92 | * ecx = указатель на данные файла курсора |
||
93 | * формат данных такой же, как и в предыдущем случае |
||
94 | * dx = LOAD_INDIRECT = 2 - данные в памяти |
||
95 | * ecx = указатель на образ курсора в формате ARGB 32*32 пикселя |
||
96 | * edx = 0xXXYY0002, где |
||
97 | * XX = x-координата "горячей точки" курсора |
||
98 | * YY = y-координата |
||
99 | * 0 <= XX, YY <= 31 |
||
100 | Возвращаемое значение: |
||
101 | * eax = 0 - неудача |
||
102 | * иначе eax = хэндл курсора |
||
103 | |||
104 | ------------------ Подфункция 5 - установить курсор ------------------ |
||
105 | Устанавливает новый курсор для окна текущего потока. |
||
106 | Параметры: |
||
107 | * eax = 37 - номер функции |
||
108 | * ebx = 5 - номер подфункции |
||
109 | * ecx = хэндл курсора |
||
110 | Возвращаемое значение: |
||
111 | * eax = хэндл предыдущего установленного курсора |
||
112 | Замечания: |
||
113 | * Если передан некорректный хэндл, то функция восстановит курсор |
||
114 | по умолчанию (стандартную стрелку). В частности, к восстановлению |
||
115 | курсора по умолчанию приводит передача ecx=0. |
||
116 | |||
117 | ------------------- Подфункция 6 - удалить курсор -------------------- |
||
118 | Параметры: |
||
119 | * eax = 37 - номер функции |
||
120 | * ebx = 6 - номер подфункции |
||
121 | * ecx = хэндл курсора |
||
122 | Возвращаемое значение: |
||
123 | * eax разрушается |
||
124 | Замечания: |
||
125 | * Курсор должен был быть ранее загружен текущим потоком |
||
126 | (вызовом подфункции 4). Функция не удаляет системные курсоры и |
||
127 | курсоры, загруженные другими приложениями. |
||
128 | * Если удаляется активный (установленный подфункцией 5) курсор, то |
||
129 | восстанавливается курсор по умолчанию (стандартная стрелка). |
||
130 | |||
131 | */=>=> |