/* ------------- reset the MENUBAR -------------- */ static void reset_menubar(WINDOW wnd) { ATTRCHR * cp = GetText(wnd) = DFrealloc(GetText(wnd), (SCREENWIDTH+5) * sizeof(ATTRCHR)); int attr = clr(WndForeground(wnd), WndBackground(wnd)); int i; for (i=0; i < SCREENWIDTH +5; i++) { cp->ch = ' '; cp->attrib = attr; cp++; } (GetText(wnd)+WindowWidth(wnd))->ch = '\0'; }
int TextProc(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2) { int i, len; CTLWINDOW *ct = GetControl(wnd); char *cp, *cp2 = ct->itext; switch (msg) { case SETFOCUS: return TRUE; case LEFT_BUTTON: return TRUE; case PAINT: if (ct == NULL || ct->itext == NULL || GetText(wnd) != NULL) break; len = min(ct->dwnd.h, MsgHeight(cp2)); cp = cp2; for (i = 0; i < len; i++) { int mlen; char *txt = cp; char *cp1 = cp; char *np = strchr(cp, '\n'); if (np != NULL) *np = '\0'; mlen = strlen(cp); while ((cp1=strchr(cp1,SHORTCUTCHAR)) != NULL) { mlen += 3; cp1++; } if (np != NULL) *np = '\n'; txt = DFmalloc(mlen+1); CopyCommand(txt, cp, FALSE, WndBackground(wnd)); txt[mlen] = '\0'; SendMessage(wnd, ADDTEXT, (PARAM)txt, 0); if ((cp = strchr(cp, '\n')) != NULL) cp++; free(txt); } break; default: break; } return BaseWndProc(TEXT, wnd, msg, p1, p2); }
int SpinButtonProc(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2) { int rtn; CTLWINDOW *ct = GetControl(wnd); if (ct != NULL) { switch (msg) { case CREATE_WINDOW: wnd->wd -= 2; wnd->rc.rt -= 2; break; case SETFOCUS: rtn = BaseWndProc(SPINBUTTON, wnd, msg, p1, p2); if (!(int)p1) SendMessage(NULL, HIDE_CURSOR, 0, 0); SetFocusCursor(wnd); return rtn; case PAINT: foreground = WndBackground(wnd); background = WndForeground(wnd); wputch(wnd,UPSCROLLBOX,WindowWidth(wnd), 0); wputch(wnd,DOWNSCROLLBOX,WindowWidth(wnd)+1,0); SetFocusCursor(wnd); break; case LEFT_BUTTON: if (p1 == GetRight(wnd) + 1) SendMessage(wnd, KEYBOARD, UP, 0); else if (p1 == GetRight(wnd) + 2) SendMessage(wnd, KEYBOARD, DN, 0); if (wnd != inFocus) SendMessage(wnd, SETFOCUS, TRUE, 0); return TRUE; case LB_SETSELECTION: rtn = BaseWndProc(SPINBUTTON, wnd, msg, p1, p2); wnd->wtop = (int) p1; SendMessage(wnd, PAINT, 0, 0); return rtn; default: break; } } return BaseWndProc(SPINBUTTON, wnd, msg, p1, p2); }