回精華區
作者itoc, 信區: itoc
標題[文件] refresh() 的說明
時間04/02/07
作者: games.bbs@help.cse.ttit.edu.tw (沉睡中), 看板: plan
標題: [文件] refresh() 的說明
時間: 秘密情人資訊站 (Fri May  5 17:12:23 1995)

※ 引述『opus.bbs@bbs.cs.nthu (浮生若夢)』之銘言:
: 請問 refresh() 搭配 clrtoeol() 該怎麼用,
: 我用起來會出現殘影。

  請看 refresh(), visio.c 利用一個結構存放整個螢幕的資料, 所以 refresh()
  只做新舊資料間的比對, 如果有不同才印出, 而位置是取絕對位址, 沒有考慮到
  ANSI 碼的情形...

  舉例 :  假設目前螢幕為    [1234567890]
            要蓋掉的字為    [*[1;33mabc]

          結果會變成        [abc4567890]

  因為 refresh() 認為已經都蓋掉了... 但實際上由於 ANSI 碼的影響, 會有殘留

  程式要改為  clrtoeol(); outs("\033[1;33mabc"); refresh();

--
程式修改     :簡顯鑑           games.bbs@help.cse.ttit.edu.tw
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻