回精華區
作者itoc (League), 信區: plan
標題[修正] 回水球的位置改回倒數第二行
時間2004/03/12 Fri 10:02:16 Updated: 2004/03/12
※ 引述《jal.bbs@bbs3.au.edu.tw (站上的工友弟弟)》之銘言:
> 因為站上user習慣回訊息在下方列,所以想改回到下面,

  把回水球從 (0, 0) 改回 (b_lines - 1, 0),要改的部分有
  1) vget(line, col, ...) 中的 line
  2) 由於 save_foot() 只會有二行受到變動,所以不需 slp[3],只需 slp[2]

: bmw.c:bmw_edit()

  int recver;
- screenline slp[3];
+ screenline slp[2];
  char *userid, fpath[64];
  FILE *fp;

  ...
  ...

  for (;;)
  {
    int ch;
    BMW *benz;

-   ch = vget(0, 0, hint, bmw->msg, 62, GCARRY);
+   ch = vget(b_lines - 1, 0, hint, bmw->msg, 62, GCARRY);

: bmw.c:bmw_reply()

  int max, display, tmpmode;
  char buf[128];
  UTMP *up;
  BMW bmw;
- screenline slp[3];
+ screenline slp[2];
#ifdef BMW_DISPLAY
  screenline slt[t_lines];
#endif

: visio.c:save_foot()

void
save_foot(slp)
  screenline *slp;
{
  int i;
- int lines[3] = {0, b_lines - 1, b_lines};     /* 儲存這三行 */
+ int lines[2] = {b_lines - 1, b_lines};        /* 儲存這二行 */

- for (i = 0; i < 3; i++)
+ for (i = 0; i < 2; i++)
  {
    move(lines[i], 0);
    memcpy(slp + i, cur_slp, sizeof(screenline));
    slp[i].smod = 0;
    slp[i].emod = ANSILINELEN;/* Thor.990125:不論最後一次改到哪, 全部要繪上 */
    slp[i].oldlen = ANSILINELEN;
    slp[i].mode |= SL_MODIFIED;
  }
}

: visio.c:restore_foot()

void
restore_foot(slp)
  screenline *slp;
{
  int i;
- int lines[3] = {0, b_lines - 1, b_lines};     /* 恢復這三行 */
+ int lines[2] = {b_lines - 1, b_lines};        /* 恢復這二行 */

- for (i = 0; i < 3; i++)
+ for (i = 0; i < 2; i++)
  {
    move(lines[i], 0);
    memcpy(cur_slp, slp + i, sizeof(screenline));
  }

  refresh(); /* Thor.981222: 為防整screen重繪, 採用 refresh */
}

--
□ 本文章由 itocitoc.Dorm11.NCTU.edu.tw 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻