Linux curses 总结三(窗口)

来源:互联网 发布:淘宝昵称大全霸气 编辑:程序博客网 时间:2024/05/29 06:34
  1. WINDOWS结构
  2. 创建和销毁窗口
  3. 通用函数
  4. 一个小栗子

WINDOWS结构

 一个curses程序不仅仅只有一个窗口,stdscr就是curses程序的默认窗口,stdscr就是特殊的WINDOWS结构

创建和销毁窗口

函数名 返回值 作用 newwin WINDOW * 创建窗口 delwin int 销毁窗口

通用函数

  前面已经学习了对strscr的操作函数 <addch printw  refresh box insch delch eras clrtobot ...>这些函数在应用于窗口是也有相类似的函数  w--->用于窗口  mv--->用于光标移动  mvw---->用于窗口的光标移动
函数名 返回值 参数 addch int char waddch int WINDOW*, char mvaddch int int,int, char mvwaddch int WINDOW*,int,int printw int char,… wprintw int WINDOW*, char,… mvprintw int int,int, char,… mvwprintw int WINDOW*,char,int,int,…

移动和更新窗口

函数名 返回值 作用 mvwin int 移动一个窗口 wrefresh int 对指定窗口刷新 wclear int 对指定窗口清除 werase int 清除屏幕 touchwin int 通知curses函数库窗口改变 srcollok int 窗口卷屏幕(字符在当前窗口排不下了就会上移) srcoll int

一个小栗子

#include<stdio.h>#include<stdlib.h>#include<curses.h>int main(){ WINDOW *new_window_ptr; WINDOW *popup_window_ptr; int x_loop; int y_loop; char a_letter = 'a'; initscr(); move(5,5); printw("%s","Testing multiple windows\n"); printw("LINES =%d",LINES); printw("COLS=%d",COLS); refresh(); sleep(2); for(y_loop =0;y_loop<LINES-1;y_loop++){   for(x_loop=0;x_loop<COLS-1;x_loop++){         // mvwaddch(stdscr,y_loop,x_loop,a_letter);         addch(a_letter);         a_letter++;         if(a_letter>'z') a_letter ='a';        }} refresh(); sleep(2); new_window_ptr = newwin(10,20,5,5); mvwprintw(new_window_ptr,2,2,"%s","hello world"); mvwprintw(new_window_ptr,5,2,"%s","Notice how very long line wrap inside in window"); wrefresh(new_window_ptr); sleep(2);a_letter ='0'; for(y_loop =0;y_loop<LINES-1;y_loop++){   for(x_loop=0;x_loop<COLS-1;x_loop++){         mvwaddch(stdscr,y_loop,x_loop,a_letter);         a_letter++;         if(a_letter>'9') a_letter ='0';        }}  refresh();  sleep(2);  touchwin(new_window_ptr);  //touchwin告诉new_window_ptr指向的窗口已经发生变化,如果不不使用这个,下面语句不能使他重新绘制   wrefresh(new_window_ptr);  sleep(2);popup_window_ptr = newwin(10,20,8,8);  box(popup_window_ptr,'|','-');  mvwprintw(popup_window_ptr,5,2,"%s","pop up window");  wrefresh(popup_window_ptr);  wrefresh(new_window_ptr);  sleep(2);  touchwin(new_window_ptr);  wrefresh(new_window_ptr);  sleep(2);  wclear(new_window_ptr);  wrefresh(new_window_ptr);  sleep(2);  delwin(new_window_ptr);  touchwin(popup_window_ptr);  wrefresh(popup_window_ptr);  sleep(2);delwin(popup_window_ptr);  touchwin(stdscr);  refresh();  sleep(2); endwin(); exit(EXIT_SUCCESS);}
0 0