本文整理汇总了C++中T_CALLED函数的典型用法代码示例。如果您正苦于以下问题:C++ T_CALLED函数的具体用法?C++ T_CALLED怎么用?C++ T_CALLED使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了T_CALLED函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _nc_slk_initialize
_nc_slk_initialize(WINDOW *stwin, int cols)
{
int i;
int res = OK;
unsigned max_length;
SCREEN *sp;
TERMINAL *term;
int numlab;
T((T_CALLED("_nc_slk_initialize()")));
assert(stwin);
sp = _nc_screen_of(stwin);
if (0 == sp)
returnCode(ERR);
term = TerminalOf(SP_PARM);
assert(term);
numlab = NumLabels;
if (SP_PARM->_slk) { /* we did this already, so simply return */
returnCode(OK);
} else if ((SP_PARM->_slk = typeCalloc(SLK, 1)) == 0)
returnCode(ERR);
if (!SP_PARM->slk_format)
SP_PARM->slk_format = _nc_globals.slk_format;
/*
* If we use colors, vidputs() will suppress video attributes that conflict
* with colors. In that case, we're still guaranteed that "reverse" would
* work.
*/
if ((NoColorVideo & 1) == 0)
SetAttr(SP_PARM->_slk->attr, A_STANDOUT);
else
SetAttr(SP_PARM->_slk->attr, A_REVERSE);
SP_PARM->_slk->maxlab = ((numlab > 0)
? numlab
: MAX_SKEY(SP_PARM->slk_format));
SP_PARM->_slk->maxlen = ((numlab > 0)
? LabelWidth * LabelHeight
: MAX_SKEY_LEN(SP_PARM->slk_format));
SP_PARM->_slk->labcnt = ((SP_PARM->_slk->maxlab < MAX_SKEY(SP_PARM->slk_format))
? MAX_SKEY(SP_PARM->slk_format)
: SP_PARM->_slk->maxlab);
if (SP_PARM->_slk->maxlen <= 0
|| SP_PARM->_slk->labcnt <= 0
|| (SP_PARM->_slk->ent = typeCalloc(slk_ent,
(unsigned) SP_PARM->_slk->labcnt))
== NULL)
returnCode(slk_failed(NCURSES_SP_ARG));
max_length = SP_PARM->_slk->maxlen;
for (i = 0; i < SP_PARM->_slk->labcnt; i++) {
size_t used = max_length + 1;
SP_PARM->_slk->ent[i].ent_text = (char *) _nc_doalloc(0, used);
if (SP_PARM->_slk->ent[i].ent_text == 0)
returnCode(slk_failed(NCURSES_SP_ARG));
memset(SP_PARM->_slk->ent[i].ent_text, 0, used);
SP_PARM->_slk->ent[i].form_text = (char *) _nc_doalloc(0, used);
if (SP_PARM->_slk->ent[i].form_text == 0)
returnCode(slk_failed(NCURSES_SP_ARG));
memset(SP_PARM->_slk->ent[i].form_text, 0, used);
memset(SP_PARM->_slk->ent[i].form_text, ' ', max_length);
SP_PARM->_slk->ent[i].visible = (char) (i < SP_PARM->_slk->maxlab);
}
res = _nc_format_slks(NCURSES_SP_ARGx cols);
if ((SP_PARM->_slk->win = stwin) == NULL) {
returnCode(slk_failed(NCURSES_SP_ARG));
}
/* We now reset the format so that the next newterm has again
* per default no SLK keys and may call slk_init again to
* define a new layout. (juergen 03-Mar-1999)
*/
_nc_globals.slk_format = 0;
returnCode(res);
}
示例2: MODULE_ID
/*
** lib_wattroff.c
**
** The routine wattr_off().
**
*/
#include <curses.priv.h>
#include <ctype.h>
MODULE_ID("$Id: lib_wattroff.c,v 1.1 2009-05-21 08:33:45 steven Exp $")
NCURSES_EXPORT(int)
wattr_off(WINDOW *win, attr_t at, void *opts GCC_UNUSED)
{
T((T_CALLED("wattr_off(%p,%s)"), win, _traceattr(at)));
if (win) {
T(("... current %s (%d)",
_traceattr(WINDOW_ATTRS(win)),
GET_WINDOW_PAIR(win)));
if_EXT_COLORS({
if (at & A_COLOR)
win->_color = 0;
});
toggle_attr_off(WINDOW_ATTRS(win), at);
returnCode(OK);
} else
returnCode(ERR);
}
示例3: NCURSES_SP_NAME
NCURSES_SP_NAME(resetty) (NCURSES_SP_DCL0)
{
T((T_CALLED("resetty(%p)"), (void *) SP_PARM));
returnCode(NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx saved_tty(NCURSES_SP_ARG)));
}
示例4: new_page
new_page(const FIELD *field)
{
T((T_CALLED("new_page(%p)"), (const void *)field));
returnBool((Normalize_Field(field)->status & _NEWPAGE) ? TRUE : FALSE);
}
示例5: form_fields
form_fields(const FORM *form)
{
T((T_CALLED("form_field(%p)"), (const void *)form));
returnFieldPtr(Normalize_Form(form)->field);
}
示例6: NCURSES_EXPORT
}
#endif
/*
* This call does the same thing as the qiflush()/noqiflush() pair. We know
* for certain that SVr3 intrflush() tweaks the NOFLSH bit; on the other hand,
* the match (in the SVr4 man pages) between the language describing NOFLSH in
* termio(7) and the language describing qiflush()/noqiflush() in
* curs_inopts(3x) is too exact to be coincidence.
*/
NCURSES_EXPORT(int)
NCURSES_SP_NAME(intrflush) (NCURSES_SP_DCLx WINDOW *win GCC_UNUSED, bool flag)
{
int result = ERR;
T((T_CALLED("intrflush(%d)"), flag));
if (cur_term != 0) {
TTY buf;
BEFORE("intrflush");
buf = cur_term->Nttyb;
#ifdef TERMIOS
if (flag)
buf.c_lflag &= ~(NOFLSH);
else
buf.c_lflag |= (NOFLSH);
result = _nc_set_tty_mode(&buf);
#else
/* FIXME */
#endif
示例7: _nc_wgetch
_nc_wgetch(WINDOW *win,
unsigned long *result,
int use_meta
EVENTLIST_2nd(_nc_eventlist * evl))
{
int ch;
#ifdef NCURSES_WGETCH_EVENTS
long event_delay = -1;
#endif
T((T_CALLED("_nc_wgetch(%p)"), win));
*result = 0;
if (win == 0 || SP == 0)
returnCode(ERR);
if (cooked_key_in_fifo()) {
if (wgetch_should_refresh(win))
wrefresh(win);
*result = fifo_pull();
returnCode(OK);
}
#ifdef NCURSES_WGETCH_EVENTS
if (evl && (evl->count == 0))
evl = NULL;
event_delay = _nc_eventlist_timeout(evl);
#endif
/*
* Handle cooked mode. Grab a string from the screen,
* stuff its contents in the FIFO queue, and pop off
* the first character to return it.
*/
if (head == -1 &&
!SP->_notty &&
!SP->_raw &&
!SP->_cbreak &&
!SP->_called_wgetch) {
char buf[MAXCOLUMNS], *sp;
int rc;
TR(TRACE_IEVENT, ("filling queue in cooked mode"));
SP->_called_wgetch = TRUE;
rc = wgetnstr(win, buf, MAXCOLUMNS);
SP->_called_wgetch = FALSE;
/* ungetch in reverse order */
#ifdef NCURSES_WGETCH_EVENTS
if (rc != KEY_EVENT)
#endif
ungetch('\n');
for (sp = buf + strlen(buf); sp > buf; sp--)
ungetch(sp[-1]);
#ifdef NCURSES_WGETCH_EVENTS
/* Return it first */
if (rc == KEY_EVENT) {
*result = rc;
returnCode(OK);
}
#endif
*result = fifo_pull();
returnCode(OK);
}
if (win->_use_keypad != SP->_keypad_on)
_nc_keypad(win->_use_keypad);
if (wgetch_should_refresh(win))
wrefresh(win);
if (!win->_notimeout && (win->_delay >= 0 || SP->_cbreak > 1)) {
int delay;
TR(TRACE_IEVENT, ("timed delay in wgetch()"));
if (SP->_cbreak > 1)
delay = (SP->_cbreak - 1) * 100;
else
delay = win->_delay;
#ifdef NCURSES_WGETCH_EVENTS
if (event_delay >= 0 && delay > event_delay)
delay = event_delay;
#endif
TR(TRACE_IEVENT, ("delay is %d milliseconds", delay));
if (head == -1) { /* fifo is empty */
int rc = check_mouse_activity(delay EVENTLIST_2nd(evl));
#ifdef NCURSES_WGETCH_EVENTS
if (rc & 4) {
*result = KEY_EVENT;
returnCode(OK);
}
#endif
if (!rc)
//.........这里部分代码省略.........
示例8: dupwin
dupwin(WINDOW *win)
/* make an exact duplicate of the given window */
{
WINDOW *nwin = 0;
size_t linesize;
int i;
T((T_CALLED("dupwin(%p)"), (void *) win));
if (win != 0) {
#if NCURSES_SP_FUNCS
SCREEN *sp = _nc_screen_of(win);
#endif
_nc_lock_global(curses);
if (win->_flags & _ISPAD) {
nwin = NCURSES_SP_NAME(newpad) (NCURSES_SP_ARGx
win->_maxy + 1,
win->_maxx + 1);
} else {
nwin = NCURSES_SP_NAME(newwin) (NCURSES_SP_ARGx
win->_maxy + 1,
win->_maxx + 1,
win->_begy,
win->_begx);
}
if (nwin != 0) {
nwin->_curx = win->_curx;
nwin->_cury = win->_cury;
nwin->_maxy = win->_maxy;
nwin->_maxx = win->_maxx;
nwin->_begy = win->_begy;
nwin->_begx = win->_begx;
nwin->_yoffset = win->_yoffset;
nwin->_flags = win->_flags & ~_SUBWIN;
/* Due to the use of newwin(), the clone is not a subwindow.
* The text is really copied into the clone.
*/
WINDOW_ATTRS(nwin) = WINDOW_ATTRS(win);
nwin->_nc_bkgd = win->_nc_bkgd;
nwin->_notimeout = win->_notimeout;
nwin->_clear = win->_clear;
nwin->_leaveok = win->_leaveok;
nwin->_scroll = win->_scroll;
nwin->_idlok = win->_idlok;
nwin->_idcok = win->_idcok;
nwin->_immed = win->_immed;
nwin->_sync = win->_sync;
nwin->_use_keypad = win->_use_keypad;
nwin->_delay = win->_delay;
nwin->_parx = 0;
nwin->_pary = 0;
nwin->_parent = (WINDOW *) 0;
/* See above: the clone isn't a subwindow! */
nwin->_regtop = win->_regtop;
nwin->_regbottom = win->_regbottom;
if (win->_flags & _ISPAD)
nwin->_pad = win->_pad;
linesize = (unsigned) (win->_maxx + 1) * sizeof(NCURSES_CH_T);
for (i = 0; i <= nwin->_maxy; i++) {
memcpy(nwin->_line[i].text, win->_line[i].text, linesize);
nwin->_line[i].firstchar = win->_line[i].firstchar;
nwin->_line[i].lastchar = win->_line[i].lastchar;
}
}
_nc_unlock_global(curses);
}
returnWin(nwin);
}
示例9: field_status
field_status(const FIELD *field)
{
T((T_CALLED("field_status(%p)"), (const void *)field));
returnBool((Normalize_Field(field)->status & _CHANGED) ? TRUE : FALSE);
}
示例10: MODULE_ID
#include <curses.priv.h>
MODULE_ID("$Id: lib_chgat.c,v 1.12 2017/03/16 23:45:20 tom Exp $")
NCURSES_EXPORT(int)
wchgat(WINDOW *win,
int n,
attr_t attr,
NCURSES_PAIRS_T pair_arg,
const void *opts GCC_UNUSED)
{
int code = ERR;
int color_pair = pair_arg;
T((T_CALLED("wchgat(%p,%d,%s,%d)"),
(void *) win,
n,
_traceattr(attr),
color_pair));
set_extended_pair(opts, color_pair);
if (win) {
struct ldat *line = &(win->_line[win->_cury]);
int i;
toggle_attr_on(attr, ColorPair(color_pair));
for (i = win->_curx; i <= win->_maxx && (n == -1 || (n-- > 0)); i++) {
SetAttr(line->text[i], attr);
SetPair(line->text[i], color_pair);
示例11: wresize
wresize(WINDOW *win, int ToLines, int ToCols)
{
int col, row, size_x, size_y;
struct ldat *pline;
struct ldat *new_lines = 0;
#ifdef TRACE
T((T_CALLED("wresize(%p,%d,%d)"), win, ToLines, ToCols));
if (win) {
TR(TRACE_UPDATE, ("...beg (%ld, %ld), max(%ld,%ld), reg(%ld,%ld)",
(long) win->_begy, (long) win->_begx,
(long) win->_maxy, (long) win->_maxx,
(long) win->_regtop, (long) win->_regbottom));
if (USE_TRACEF(TRACE_UPDATE)) {
_tracedump("...before", win);
_nc_unlock_global(tracef);
}
}
#endif
if (!win || --ToLines < 0 || --ToCols < 0)
returnCode(ERR);
size_x = win->_maxx;
size_y = win->_maxy;
if (ToLines == size_y
&& ToCols == size_x)
returnCode(OK);
if ((win->_flags & _SUBWIN)) {
/*
* Check if the new limits will fit into the parent window's size. If
* not, do not resize. We could adjust the location of the subwindow,
* but the application may not like that.
*/
if (win->_pary + ToLines > win->_parent->_maxy
|| win->_parx + ToCols > win->_parent->_maxx) {
returnCode(ERR);
}
pline = win->_parent->_line;
} else {
pline = 0;
}
/*
* Allocate new memory as needed. Do the allocations without modifying
* the original window, in case an allocation fails. Always allocate
* (at least temporarily) the array pointing to the individual lines.
*/
new_lines = typeCalloc(struct ldat, (unsigned) (ToLines + 1));
if (new_lines == 0)
returnCode(ERR);
/*
* For each line in the target, allocate or adjust pointers for the
* corresponding text, depending on whether this is a window or a
* subwindow.
*/
for (row = 0; row <= ToLines; ++row) {
int begin = (row > size_y) ? 0 : (size_x + 1);
int end = ToCols;
NCURSES_CH_T *s;
if (!(win->_flags & _SUBWIN)) {
if (row <= size_y) {
if (ToCols != size_x) {
if ((s = typeMalloc(NCURSES_CH_T, ToCols + 1)) == 0)
returnCode(cleanup_lines(new_lines, row));
for (col = 0; col <= ToCols; ++col) {
s[col] = (col <= size_x
? win->_line[row].text[col]
: win->_nc_bkgd);
}
} else {
s = win->_line[row].text;
}
} else {
if ((s = typeMalloc(NCURSES_CH_T, ToCols + 1)) == 0)
returnCode(cleanup_lines(new_lines, row));
for (col = 0; col <= ToCols; ++col)
s[col] = win->_nc_bkgd;
}
} else {
s = &pline[win->_pary + row].text[win->_parx];
}
if_USE_SCROLL_HINTS(new_lines[row].oldindex = row);
if (row <= size_y) {
new_lines[row].firstchar = win->_line[row].firstchar;
new_lines[row].lastchar = win->_line[row].lastchar;
}
if ((ToCols != size_x) || (row > size_y)) {
if (end >= begin) { /* growing */
if (new_lines[row].firstchar < begin)
new_lines[row].firstchar = begin;
} else { /* shrinking */
new_lines[row].firstchar = 0;
}
new_lines[row].lastchar = ToCols;
//.........这里部分代码省略.........
示例12: wadd_wchnstr
wadd_wchnstr(WINDOW *win, const cchar_t *astr, int n)
{
NCURSES_CH_T blank = NewChar(BLANK_TEXT);
NCURSES_SIZE_T y = win->_cury;
NCURSES_SIZE_T x = win->_curx;
int code = OK;
struct ldat *line;
int i, j, start, len, end;
T((T_CALLED("wadd_wchnstr(%p,%s,%d)"), win, _nc_viscbuf(astr, n), n));
if (!win)
returnCode(ERR);
if (n < 0) {
n = _nc_wchstrlen(astr);
}
if (n > win->_maxx - x + 1)
n = win->_maxx - x + 1;
if (n == 0)
returnCode(code);
line = &(win->_line[y]);
start = x;
end = x + n - 1;
/*
* Reset orphaned cells of multi-column characters that extend up to the
* new string's location to blanks.
*/
if (x > 0 && isWidecExt(line->text[x])) {
for (i = 0; i <= x; ++i) {
if (!isWidecExt(line->text[x - i])) {
/* must be isWidecBase() */
start -= i;
while (i > 0) {
line->text[x - i--] = _nc_render(win, blank);
}
break;
}
}
}
/*
* Copy the new string to the window.
*/
for (i = 0; i < n && x <= win->_maxx; ++i) {
if (isWidecExt(astr[i]))
continue;
len = wcwidth(CharOf(astr[i]));
if (x + len - 1 <= win->_maxx) {
line->text[x] = _nc_render(win, astr[i]);
if (len > 1) {
for (j = 0; j < len; ++j) {
if (j != 0) {
line->text[x + j] = line->text[x];
}
SetWidecExt(line->text[x + j], j);
}
}
x += len;
end += len - 1;
} else {
break;
}
}
/*
* Set orphaned cells of multi-column characters which lie after the new
* string to blanks.
*/
while (x <= win->_maxx && isWidecExt(line->text[x])) {
line->text[x] = _nc_render(win, blank);
++end;
++x;
}
CHANGED_RANGE(line, start, end);
_nc_synchook(win);
returnCode(code);
}
示例13: wborder_set
static inline int
#endif
wborder_set(WINDOW *win,
const ARG_CH_T ls, const ARG_CH_T rs,
const ARG_CH_T ts, const ARG_CH_T bs,
const ARG_CH_T tl, const ARG_CH_T tr,
const ARG_CH_T bl, const ARG_CH_T br)
{
NCURSES_SIZE_T i;
NCURSES_SIZE_T endx, endy;
NCURSES_CH_T wls, wrs, wts, wbs, wtl, wtr, wbl, wbr;
T((T_CALLED("wborder(%p,%s,%s,%s,%s,%s,%s,%s,%s)"),
win,
_tracech_t2(1, ls),
_tracech_t2(2, rs),
_tracech_t2(3, ts),
_tracech_t2(4, bs),
_tracech_t2(5, tl),
_tracech_t2(6, tr),
_tracech_t2(7, bl),
_tracech_t2(8, br)));
if (!win)
returnCode(ERR);
#define RENDER_WITH_DEFAULT(ch,def) \
if (ch == 0) \
SetChar(w ## ch,ChCharOf(def),ChAttrOf(def)); \
else w ## ch = CHDEREF(ch); \
w ## ch = _nc_render(win, w ## ch)
RENDER_WITH_DEFAULT(ls, ACS_VLINE);
RENDER_WITH_DEFAULT(rs, ACS_VLINE);
RENDER_WITH_DEFAULT(ts, ACS_HLINE);
RENDER_WITH_DEFAULT(bs, ACS_HLINE);
RENDER_WITH_DEFAULT(tl, ACS_ULCORNER);
RENDER_WITH_DEFAULT(tr, ACS_URCORNER);
RENDER_WITH_DEFAULT(bl, ACS_LLCORNER);
RENDER_WITH_DEFAULT(br, ACS_LRCORNER);
T(("using %s, %s, %s, %s, %s, %s, %s, %s",
_tracech_t2(1, CHREF(wls)),
_tracech_t2(2, CHREF(wrs)),
_tracech_t2(3, CHREF(wts)),
_tracech_t2(4, CHREF(wbs)),
_tracech_t2(5, CHREF(wtl)),
_tracech_t2(6, CHREF(wtr)),
_tracech_t2(7, CHREF(wbl)),
_tracech_t2(8, CHREF(wbr))));
endx = win->_maxx;
endy = win->_maxy;
for (i = 0; i <= endx; i++) {
win->_line[0].text[i] = wts;
win->_line[endy].text[i] = wbs;
}
win->_line[endy].firstchar = win->_line[0].firstchar = 0;
win->_line[endy].lastchar = win->_line[0].lastchar = endx;
for (i = 0; i <= endy; i++) {
win->_line[i].text[0] = wls;
win->_line[i].text[endx] = wrs;
win->_line[i].firstchar = 0;
win->_line[i].lastchar = endx;
}
win->_line[0].text[0] = wtl;
win->_line[0].text[endx] = wtr;
win->_line[endy].text[0] = wbl;
win->_line[endy].text[endx] = wbr;
_nc_synchook(win);
returnCode(OK);
}
示例14: MODULE_ID
/*
** lib_chgat.c
**
** The routine wchgat().
**
*/
#include <curses.priv.h>
MODULE_ID("$Id: lib_chgat.c,v 1.1.1.1 2001/11/29 20:40:56 jevans Exp $")
NCURSES_EXPORT(int)
wchgat
(WINDOW *win, int n, attr_t attr, short color, const void *opts GCC_UNUSED)
{
int i;
T((T_CALLED("wchgat(%p,%d,%s,%d)"), win, n, _traceattr(attr), color));
if (win) {
toggle_attr_on(attr, COLOR_PAIR(color));
for (i = win->_curx; i <= win->_maxx && (n == -1 || (n-- > 0)); i++)
SetAttr(win->_line[win->_cury].text[i], attr);
returnCode(OK);
} else
returnCode(ERR);
}
示例15: _nc_slk_initialize
_nc_slk_initialize(WINDOW *stwin, int cols)
{
int i, x;
int res = OK;
unsigned max_length;
T((T_CALLED("_nc_slk_initialize()")));
if (SP->_slk) { /* we did this already, so simply return */
returnCode(OK);
} else if ((SP->_slk = typeCalloc(SLK, 1)) == 0)
returnCode(ERR);
SP->_slk->ent = NULL;
/*
* If we use colors, vidputs() will suppress video attributes that conflict
* with colors. In that case, we're still guaranteed that "reverse" would
* work.
*/
if ((no_color_video & 1) == 0)
SetAttr(SP->_slk->attr, A_STANDOUT);
else
SetAttr(SP->_slk->attr, A_REVERSE);
SP->_slk->maxlab = ((num_labels > 0)
? num_labels
: MAX_SKEY(_nc_slk_format));
SP->_slk->maxlen = ((num_labels > 0)
? label_width * label_height
: MAX_SKEY_LEN(_nc_slk_format));
SP->_slk->labcnt = ((SP->_slk->maxlab < MAX_SKEY(_nc_slk_format))
? MAX_SKEY(_nc_slk_format)
: SP->_slk->maxlab);
if (SP->_slk->maxlen <= 0
|| SP->_slk->labcnt <= 0
|| (SP->_slk->ent = typeCalloc(slk_ent,
(unsigned) SP->_slk->labcnt)) == NULL)
returnCode(slk_failed());
max_length = SP->_slk->maxlen;
for (i = 0; i < SP->_slk->labcnt; i++) {
size_t used = max_length + 1;
if ((SP->_slk->ent[i].ent_text = (char *) _nc_doalloc(0, used)) == 0)
returnCode(slk_failed());
memset(SP->_slk->ent[i].ent_text, 0, used);
if ((SP->_slk->ent[i].form_text = (char *) _nc_doalloc(0, used)) == 0)
returnCode(slk_failed());
memset(SP->_slk->ent[i].form_text, 0, used);
memset(SP->_slk->ent[i].form_text, ' ', max_length);
SP->_slk->ent[i].visible = (i < SP->_slk->maxlab);
}
if (_nc_slk_format >= 3) { /* PC style */
int gap = (cols - 3 * (3 + 4 * max_length)) / 2;
if (gap < 1)
gap = 1;
for (i = x = 0; i < SP->_slk->maxlab; i++) {
SP->_slk->ent[i].ent_x = x;
x += max_length;
x += (i == 3 || i == 7) ? gap : 1;
}
slk_paint_info(stwin);
} else {
if (_nc_slk_format == 2) { /* 4-4 */
int gap = cols - (SP->_slk->maxlab * max_length) - 6;
if (gap < 1)
gap = 1;
for (i = x = 0; i < SP->_slk->maxlab; i++) {
SP->_slk->ent[i].ent_x = x;
x += max_length;
x += (i == 3) ? gap : 1;
}
} else {
if (_nc_slk_format == 1) { /* 1 -> 3-2-3 */
int gap = (cols - (SP->_slk->maxlab * max_length) - 5)
/ 2;
if (gap < 1)
gap = 1;
for (i = x = 0; i < SP->_slk->maxlab; i++) {
SP->_slk->ent[i].ent_x = x;
x += max_length;
x += (i == 2 || i == 4) ? gap : 1;
}
} else
returnCode(slk_failed());
}
}
SP->_slk->dirty = TRUE;
if ((SP->_slk->win = stwin) == NULL) {
returnCode(slk_failed());
}
//.........这里部分代码省略.........