介绍Curses编程中的一些基本API:
initsrc() 初始化一个窗口,返回值是一个WINDOW*指针,代表创建的窗口
endwin() 恢复原来的窗口然后退出,与initsrc对应
cbreak() 设置当前终端不等待回车键
nocbreak()等待回车键输入才读取
noecho() 设置当前终端不回显
echo()开启终端回显
move(row, col)光标移到(row,col)处
clear() 清屏,光标回到窗口最左上角(0, 0)处
getch() 输入一个字符
addch()在当前光标处输入一个字符替换原来的字符,然后光标右移
insch()在当前光标处插入一个字符,其他字符依次右移一位
delch()删除光标处的字符,右边的字符依次左移,光标位置不变
char inch() 返回光标处的字符
mvaddstr(row, col, *str)移动光标到(row,col),然后输出字符串
getyx(WINDOW*, row, col)返回当前光标的坐标
getmaxyx(WINDOW* wd, int rows, int cols) 获取窗口wd的长和宽
move(int row, int col) 将光标移到指定的坐标处
scanw()和printw(),与scanf和printf类似
wgetstr()获取字符串
attron()和attroff()开启和关闭一些属性
refresh() 将页面输出刷新
- #include <curses.h>
- int rows, cols;
- int r = 0, c = 0;
- void draw(char ch)
- {
- if (ch == '\n')
- {
- r++;
- c = 0;
- }
- else
- {
- delch();
- insch(ch);
- c++;
- }
- if ( c==cols)
- {
- c = 0;
- r++;
- if ( r==rows)
- r = 0;
- }
-
- move(r, c);
- refresh();
- }
- int main()
- {
- char ch;
- WINDOW *wnd;
- wnd = initscr();
-
- cbreak();
- noecho();
-
- getmaxyx(wnd, rows, cols);
-
- clear();
-
- if (start_color() == OK)
- {
- init_pair(1, COLOR_RED, COLOR_GREEN);
- attron(COLOR_PAIR(1));
- while(1)
- {
- ch = getch();
- if (ch == 'q' || ch == 'Q')
- break;
- draw(ch);
- }
- attroff(COLOR_PAIR(1));
- refresh();
- }
- else
- {
- waddstr(stdscr, "Terminal not support.");
- refresh();
- }
-
- endwin();
-
- return 0;
- }
阅读(2317) | 评论(0) | 转发(0) |