struct _link { int count; int x[4096], y[4096], w[4096], h[4096]; collection text; collection url; void clear(); void add(); int hover(); int active; } link; void _link::clear() { text.drop(); url.drop(); count = 0; } void _link::add(int _xx, _yy, _ww, _hh, dword _textt, _urll ) { if (count==4095) return; x[count] = _xx; y[count] = _yy; w[count] = _ww; h[count] = _hh; text.add(_textt); url.add(_urll); count++; } int _link::hover() { //char tempp[4096]; dword color; int i; active = -1; mouse.x = mouse.x - list.x; mouse.y = mouse.y - list.y; for (i=0; i<link.count; i++) { if(link.y[i]>list.first*list.item_h) && (link.y[i]<list.first*list.item_h+list.h) { // sprintf(#tempp, "mx:%i my:%i x[i]:%i y[i]:%i", mx, my, x[i], y[i]); // sprintf(#tempp); if (mouse.x>link.x[i]) && (-list.first*list.item_h+link.y[i]<mouse.y) && (mouse.x<link.x[i]+link.w[i]) && (-list.first*list.item_h+link.y[i]+link.h[i]>mouse.y) { color = 0xFFFfff; CursorPointer.Set(); active = i; } else { color = 0x0000FF; } DrawBar(link.x[i]+list.x, -list.first*list.item_h+link.y[i]+list.y+link.h[i]-1, link.w[i], 1, color); } } if (active==-1) CursorPointer.Restore(); return false; }