GRECT * gemtk_obj_screen_rect(OBJECT * tree, short obj) { static GRECT obj_screen; get_objframe(tree, obj, &obj_screen); return(&obj_screen); }
void redraw_aktion(void) { if (akt_handle > 0) { GRECT r; get_objframe(aktion, 0, &r); redraw(ROOT, MAX_DEPTH, r.g_x, r.g_y, r.g_w, r.g_h); } }
bool do_aktion(char *str, long value) { int msg[8], kreturn, d, event; long max_len, help; GRECT r; bool ret = TRUE; /* zun�chst Box updaten */ if (str[0] != EOS) { set_string(aktion, ATEXT, str); get_objframe(aktion, ATEXT, &r); redraw(ROOT, MAX_DEPTH, r.g_x, r.g_y, r.g_w, r.g_h); } max_len = aktion[ABOX1].ob_width; help = max((max_len * value) / max_value,1); help = min(max_len, help); if (aktion[ABOX2].ob_width != help) { aktion[ABOX2].ob_width = (int) help; get_objframe(aktion, ABOX2, &r); redraw(ABOX2, 0, r.g_x, r.g_y, r.g_w, r.g_h); } /* nachschauen, ob es irgendwelche GEM-Events gibt */ do { event = evnt_multi(MU_MESAG|MU_KEYBD|MU_TIMER, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, msg, 1, &d, &d, &d, &d, &kreturn, &d); if (event & MU_MESAG) { switch (msg[0]) { case WM_REDRAW : if (msg[3] == akt_handle) redraw(ROOT, MAX_DEPTH, msg[4], msg[5], msg[6], msg[7]); else handle_msg(msg); break; case WM_MOVED : if (msg[3] == akt_handle) move(msg[4], msg[5]); else handle_msg(msg); break; case WM_TOPPED : case WM_NEWTOP : case WM_ONTOP : wind_set(akt_handle, WF_TOP, 0, 0, 0, 0); break; case WM_SIZED: case WM_BOTTOMED: /* ignore */ break; case AP_TERM : ret = FALSE; break; } } if (event & MU_KEYBD) { if (interupt && kreturn == 0x011B) /* ESC */ ret = FALSE; } } while (event & MU_MESAG); /* alle Messages auswerten */ return ret; }