作者TonyQ.bbs@bbs.wretch.cc (沉默是金) 看板: itoc
標題Re: 有關推文
時間無名小站 (2007/04/27 Fri 03:29:23)
※ 引述《brucebee.bbs@cpu.tfcis.org (bruce)》之銘言:
> 不知道能不能在一邊推文時
> 顯示出剩幾個字 或剩幾格半型??
> 要不然有時打到最後才知道有點長 要想辦法濃縮
我的改法
: bbs.h
+ #define COUNTECHO 0x0800
/* 推文加上長度顯示 20070427 Bone */
: post.c :int post_score(xo)
- if (!vget(b_lines, 0, "請輸入理由:", reason, maxlen, DOECHO))
+ if (!vget(b_lines, 0, "請輸入理由:", reason, maxlen, DOECHO|COUNTECHO))
/* 水球加上長度顯示 20070427 Bone */
: bmw.c :void bmw_edit(up, hint, bmw)
- ch = vget(0, 0, hint, bmw->msg, 62, GCARRY);
+ ch = vget(0, 0, hint, bmw->msg, 62, GCARRY|COUNTECHO);
: visio.c :int vget(line, col, prompt, data, max, echo)
for (;;)
{
outc(echo ? ch : '*');
next = *prompt;
*prompt++ = ch;
if (i >= len)
break;
i++;
ch = next;
move(line, col);
}
col++;
len++;
+ /* 20070426 Bone. for 一般字元輸入*/
+ if (echo & COUNTECHO){
+ move(vlen, hlen+max);
+ uschar mybuf[15];
+ sprintf (mybuf," %d / %d ",len,max-len);
+ outs(&mybuf);
+ }
+ /* end*/
.
.
.
+ /* 20070426 Bone. for 特殊鍵 (del backspace)*/
+ if (echo & COUNTECHO){
+ move(vlen, hlen+max);
+ uschar mybuf[15];
+ sprintf (mybuf," %d / %d ",len,max-len);
+ outs(&mybuf);
+ }
+ /* end*/
}
if (len >= 2 && echo)
{
for (line = MAXLASTCMD - 1; line; line--)
strcpy(lastcmd[line], lastcmd[line - 1]);
strcpy(lastcmd[0], data);
}
簡單來說就是在 if (isprint2(ch))跟switch (ch)尾巴加上那兩段;
我沒有學過C語言,所以如果有任何問題煩請諸位大德指正。 ̄▽ ̄|||
附上運作圖示一張
http://tony1223.no-ip.info/post.jpg
----
btw 話說理論上BBS.h是不是應該要有
#define NOECHO 0x0000 /* Flags to getdata input function */
#define DOECHO 0x0100
#define LCECHO 0x0200
#define GCARRY 0x0400
這一串
我在我的bbs.h裡面沒看到 不曉得放在哪,
不過我還是把我的COUNTECHO擺在bbs.h。
版本是MapleBBS-3.10-20070324-MSWin.exe
--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知止知止220-134-27-68.HINET-IP.hinet.net海
TonyQ 在 07/04/27 3:29:23 從 220.134.27.68 修改這篇文章
TonyQ 在 07/04/27 3:30:01 從 220.134.27.68 修改這篇文章