不回顯
curses庫是由柏克萊大學的Bill Joy及Ken Arnold所開發的。當時開發curses庫的目的是為了解決程式對於不同終端的相容性。curses庫用於處理Linux/UNIX上的游標移動及螢幕顯示問題。考慮到curses庫的複雜性,這裡只是簡單地介紹一下curses庫的使用。需要這方面詳細資訊可以查閱相關資料。
使用curses庫中的函式前,需要進行必要的初始化工作。程式需要使用initscr函式來開啟curses模式,在結束前呼叫endwin函式來關閉curses模式。程式碼如下:
#include <curses.h>
int main(int argc,char* argv[]){
initscr();
…
endwin();
}
在實際使用中,出於方便的目的,往往把一些初始化的動作放置在初始化函式中,以方便呼叫。具體程式碼如下:
void initial()
{
initscr();
cbreak();
nl();
noecho();
intrflush(stdscr,FALSE);
keypad(stdscr,TRUE);
refresh();
}
程式碼中使用到了一些curses庫的函式,含義如下。
l cbreak():呼叫cbreak函式後,除了“Del”和“Ctrl”鍵外,接受其他所有字元輸入。
l nl()/nonl():輸出時,換行是否作為回車字元。nl函式將換行作為回車符,而nonl函式相反。
l noecho()/echo():關閉/開啟輸入回顯功能。
l intrflush(WINDOW *win, bool bf):win為標準輸出。當bf為true時輸入Break,可以加快中斷的響應。但是,有可能會造成螢幕輸出資訊的混亂。
l keypad(WINDOW *win, bool bf):win為標準輸出。呼叫keypad函式後,將可以使用鍵盤上的一些特殊字元,如方向鍵,轉化成curses.h中的特殊鍵。
l refresh():重繪螢幕顯示內容。在呼叫initscr函式後,第一次呼叫refresh函式會清除螢幕顯示。