初識curses 簡單常用的函式簡介

2021-07-28 15:27:24 字數 3085 閱讀 4283



如果可以盡量看 《unix/linux下curses開發指南》這本書,更詳細。

initscr()     初始化為curses 模式,用來清除螢幕上所有的字元 endwin() 退出curses 模式

refresh()  告訴curses系統將緩衝區的內容輸出到螢幕上。

move (int new_y, int new_x) 把邏輯游標的位置移動到指定的地點(行、列)

addch()、addstr()系列:將字元(串)列印到螢幕上,可以附加加字元修飾引數的一類函式。

addch (const chtype char_to_add)         在游標的當前位置新增給定的字元

addstr (chtype * const string_to_add)     在游標的當前位置新增給定的字串

mvaddch(int y,int x,chtype ch)         用於將游標移動到指定位置輸出字元

waddch(window*,chtype ch)      將字元輸出到指定視窗的當前座標處

mvwaddch(window*,int, int,chtype)          將字元輸出到指定視窗的指定座標處

mvaddstr()           用於將游標移動到指定位置輸出字串

waddstr()         將字串輸出到指定視窗的當前座標處

printw()系列:和printf()一樣的具有格式化輸出的一類函式。

printw(char *format,…);       和printf()類似,在游標當前位置格式化輸出

mvprintw(int y,int x,char *format,…);      將游標移動到指定位置,然後格式化輸出內容 wprintw(window*,char *format,…)       在指定視窗的當前座標處,格式化輸出內容

mvwprintw(window*,int y, int x,char *format,…)   在指定視窗的指定座標處,格式化輸出內容

插入刪除系列函式

insch(chtype char_to_insert)       在當前游標處插入字元,把現有字元後移

insertln(void)         插入乙個空行,把現有的行依次往下移一行

delch(void)         刪除位於當前游標處的字元

deleteln(void)         刪除當前游標所指的行

beep()         使機器發出蜂鳴聲

flash()    使螢幕產生閃爍 清除螢幕函式

erase(void)    在每個螢幕空白位置寫上空白符 

clear(void)        清除整個螢幕,要配合refresh()使用

clrtobot(void)        清除從游標當前位置到螢幕右下角的所有內容

clrtoeol(void)       從游標當前位置刪除到這一行的結尾

scanw()系列函式     scanw() 和標準io的scanf()類似,用來獲取使用者的輸入

mvscanw()       將游標移動到指定位置,並獲取使用者輸入

wscanw()       在指定視窗的當前座標處,獲取使用者輸入

mvwscanw()     在指定視窗的指定座標處,獲取使用者輸入 視窗機制

window *newwin(int lines,int cols, int strat_y,int start_x) 建立乙個新視窗,視窗從螢幕位置(start_y,start_x)開始,尺寸由分別代表行數和列數的lines和cols引數指定

int delwin (window *window_to_delete); 刪除乙個通過newwin函式建立的 視窗

int box(window *win,chtype verch,chtype horch)     在已定義的視窗外圍畫上邊框

border(chtype ls,chtype rs,chtype ts, chtype bs,chtype tl,chtype tr,chtype bl, chtype br) 根據ls(左邊框字元),rs(右邊框字元),ts(上邊框字元),bs(底部字元),tl(左上角),tr(右上角),bl(左下角),br(右下角)

wborder(window*,….)     引數多了乙個指定的視窗,其他同上 畫線函式

hline(chtype ch,int  n)    當前游標處用n個ch字元畫出一條水平線

whline(window*,chtype,int)      指定視窗的當前座標處,畫出一條水平線

vline(chtype ch , int n)       當前游標處用n個ch字元畫出一條垂直線

wvline(window*,chtype,int)         指定視窗的當前座標處,用n個ch字元畫出一條垂直線

mvhline(int y, int x, chtype ch,int n)     在(y,x)游標處用n個ch字元畫出一條水平線

mvwhline(window*,int y, int x,chtype ch, int n) 在指定視窗(y,x)游標處用n個ch字元畫出一條水平線

mvvline(int y, int x, chtype ch, int n)        當(y,x)游標處用n個ch字元畫出一條垂直線

mvwvline(window*, int y, int x,chtype ch, int n)   在指定視窗(y,x)游標處用n個ch字元畫出一條垂直線

重新整理視窗

wrefresh(window *)    重新整理指定視窗,同refresh()

wclear(window *)    清除指定視窗的內容

werase(window*)     同 wclear()

touchwin(window *)      告訴curses,指定win發生變化,下次重新整理時要重新整理該視窗 scrollok(window*, bool)   控制視窗的卷屏情況

scroll(window*)    同上

int keypad (window *win_ptr,bool keypad_on)

啟用keypad模式,開啟轉義序列與邏輯按鍵之間的轉換功能 ctype.h中的字元函式

Curses 中的 noecho 函式

echo模式中的乙個函式。echo模式即回顯模式,echo模式用來決定使用者的輸入是否立即回顯。當echo模式設定後,它使得在鍵盤上輸入的每乙個字元都在終端螢幕上當前游標處顯示出來,在呼叫某些函式如addch 的時候字元顯示後游標的位置將自動的向後移動乙個位置。在非回顯模式下,字元的顯示必須由程式本...

curses不是linux裡預設的C函式庫

今天在除錯乙個貪吃蛇程式時,出現如下錯誤 hsy localhost c g snack.cpp o snack tmp cccuz3jm.o 在函式 playgame int,int 中 snack.cpp text 0xce 對 erase 未定義的引用 snack.cpp text 0xed ...

簡單Excel常用函式

目錄 1.函式名稱 sumproduct 2.函式名稱 round 3.函式名稱 rounddown 4.函式名稱 roundup 5.函式名稱 dsum 6.函式名稱 count 7.函式名稱 countif 8.函式名稱 counta 9.函式名稱 countifs 主要功能 返回相應的陣列或區...