程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> linux curses函數庫,curses函數庫

linux curses函數庫,curses函數庫

編輯:關於C語言

linux curses函數庫,curses函數庫


fedora20,安裝yum install ncurses-devel

編譯時:-lncurses

頭文件:#include<curses.h>

參考:man ncurses \linux程序設計

 

一,屏幕


1, 以initscr()開始,以endwin();結束

  WINDOW *initscr(void);  //初始化

  int endwin(void);     // 退出curses, 返回OK/ERR

 

2, 輸出到屏幕

  int addch(const chtype ch);      //當前位置add ch

  int addchstr(chtype *const str);    //當前位置add str

  int printw(char *format,...);      //類printf,格式化輸出

  int refresh(void);          //刷新物理屏,更改邏輯屏,必須刷新才能在物理屏上面顯示

  int box(WINDOW *ptr, chtype v_ch, chtype h_ch);    //圍繞ptr指定窗口畫方框,垂直/水平方向字符v_ch/h_ch

  int insch(chtype ch);                //插入ch,右移

  int insertln(void);                  //插入空白行,下移

  int delch(void);                  //刪除光標位置字符,左移

  int deleteln(void)                 //刪除當前行,上移

  int beep(void);                  //發聲

  int flash(void);                  //閃屏

 

3,從屏幕讀取

  chtype inch(void);      //讀取光標位置字符

  int instr(char *string);    //讀取字符串到str,到NUL,不總是被支持

  int innstr(char *str, int n_of_str);  //讀取n個字符到str,或NUL,不總是被支持

 

4,清除屏幕

  int erase(void);    //清屏,以空白字符填充

  int clear(void);    //清屏

  int clrtobot(void);    //清至屏幕結尾

  int clrtoeol(void);    //清至行尾

 

5,移動光標

  int move(int new_y, int new_x);    //y垂直方向,x水平方向

  int leaveok(WINDOW *ptr, bool lf);  //false,刷新後,硬件光標位置同邏輯光標;true,刷新後,硬件光標隨機位置。一般默認選項符合用戶需求。

 

6,字符屬性

  int attron(chtype attr);    //啟動指定屬性(不影響其他)

  int attroff(chtype attr);    //關閉指定屬性(不影響其他)

  attrset(chtype attr);    //設置字符屬性

  int standout(void);    //“突出“模式,開

  int standend(void);    //“突出“模式,關

  A_NORMAL

  A_STANDOUT

  A_UNDERLINE

  A_REVERSE

  詳細man curs_attr

 

二,鍵盤


 

1, 鍵盤模式

  int echo(void);    //輸入字符回顯,開啟

  int noecho(void);  //                關閉

  int cbreak(void);    //cbreak模式,鍵盤輸入立即處理,開啟;默認cooked模式,回車後處理

  int nocbreak(void);  //          關閉

  int raw(void);      //  關閉特殊字符的處理功能,開啟;

  int noraw(void);    //        關閉,同時關閉raw,cbreak

 

2, 鍵盤輸入

  int getch(void);

  int getstr(char *str);

  int getnstr(char *str, int n_of_str);

  int scanw(char *format,...);

 

三,窗口


 

  

1,WINDOW結構

  WINDOW *newwin(int n_of_lines, int n_of_cols, int start_y, int start_x);  //新建窗口

  int delwin(WINDOW *ptr);    //銷毀窗口

 

2,通用函數

  例子:

  int addch(const chtype ch);

  int waddch(WINDOW *ptr, const chtype ch);

  int mvaddch(int y, int x, const chtype ch);

  int mvwaddch(WINDOW *ptr, int y, int x, const chtype ch);

  前綴w用於窗口、mv用於光標移動,mvw用於在窗口中移動光標

  其他許多函數,都有類似通用函數,man ncurses查看

 

3,移動和更新窗口

  int mvwin(WINDOW *ptr ,int new_y, int new_x);  

  int wrefresh(WINDOW *ptr);         

  int wclear(WINDOW *ptr);            

  int werase(WINDOW *ptr);

  int touchwin(WINDOW *ptr);      //通知curses函數庫,ptr指定窗口發生變化,下次wrefresh時,需重繪窗口。利用該函數,安排要顯示的窗口

  int scrollok(WINDOW *ptr, bool sf);    //true,允許窗口卷屏。默認不允許

  int scroll(WINDOW *ptr);        //調用scrollok後,再調用scroll,把窗口內容上卷一行。

4,優化屏幕刷新

  int wnoutrefresh(WINDOW *ptr);

  int doupdate(void);

 

四,子窗口


  WINDOW *subwin(WINDOW *parent, int n_of_lines, int n_of_cols, int start_y, int start_x);

  int delwin(WINDOW *ptr);

  使用子窗口前,必須對其父窗口調用touchwin函數

 

五,keypad模式


 

  int keypad(WINDOW *ptr, bool keypad_on);

 

六,彩色顯示


 

  bool has_colors(void);  //支持彩色顯示,則返回true,否則false

  int start_color(void);    //初始化彩色顯示功能,OK/ERR

  int init_pair(short pair_number, short foreground, short background);    //eg: init_pair(1,COLOR_RED,COLOR_GREEN),將紅色前景綠色背景定義為一號顏色組合。

  int COLOR_PAIR(int pair_number);            //eg: COLOR_PAIR(1),作為屬性來訪問,同A_BOLD

  int pair_content(short pair_number, short *foreground, short *background);  //和init_pair相反,通過顏色組合號,來獲得顏色。

  COLOR_BLACK  RED  GREEN  YELLOW  BLUE  MEGENTA品紅  CYAN藍綠色  WHITE

  int init_color(short color_number, short red, short green, short blue);    //通過red green blue組合顏色

  

七,pad


 

  所有執行寫窗口操作的curses函數同樣可用於pad

  WINDOW *newpad(int n_of_lines, int n_of_columns);    //創建邏輯屏幕,可以大於物理屏幕,兩個參數代表邏輯屏幕大小,返回指向WINDOW結構的指針

  int prefresh(WINDOW *pad_ptr, int pad_row, int pad_column,  

                int screen_row_min, int screen_col_min, int screen_row_max,int screen_col_max);

       pad_ptr指針,newpad返回的指針;

       pad_row, pad_column,指定pad上位置

       screen_row_min, screen_col_min

         screen_row_max, screen_col_max,指定物理屏幕顯示區域

  pnoutrefresh函數,作用與wnoutrefresh函數一樣,為了更有效地刷新屏幕。

 

八,更多函數參考 man ncurses

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved