curses和窗口

  1 #include<stdio.h>
  2 #include<curses.h>
  3 #include<stdlib.h>
  4 #include<unistd.h>
  5 #include<string.h>
  6 #define PW_LEN 256
  7 #define NAME_LEN 256
  8 int main()
  9 {
 10     initscr();
 11     move(5,10);
 12     attron(A_BLINK);
 13     printw("%s","hello linux");
 14     attroff(A_BLINK);
 15     refresh();
 16     sleep(1);
 17     move(8,10);
 18     attron(A_BOLD);
 19     addstr("hello c/c++");
 20     attroff(A_BOLD);
 21     refresh();
 22     sleep(1);
 23     move(10,15);
 24     attron(A_STANDOUT);
 25     printw("%s","test and for fun");
 26     attroff(A_STANDOUT);
 27     refresh();
 28     sleep(1);
 29
 30     int i=0;
 31     const char *read_password="test";
 32     char name [NAME_LEN];
 33     char password[PW_LEN];
 34     move(15,15);
 35     printw("%s","login:");
 36     while(true)
 37     {
 38     i=0;
 39     move(16,15);
 40     printw("%s","user name:");
 41     getstr(name);
 42
 43     move(17,15);
 44     printw("%s","user password:");
 45     refresh();
 46     cbreak();  //非默认输入模式
 47     noecho();   //关闭回显功能
 48     memset(password,‘\0‘,sizeof(password));
 49
 50     while(i<PW_LEN)
 51     {
 52         password[i]=getch();
 53         if(password[i]==‘\n‘)
 54             break;
 55         move(17,30+i);
 56         addch(‘*‘);
 57         refresh();
 58         i++;
 59     }
 60
 61     echo();
 62     nocbreak();
 63     move(18,15);
 64
 65     if(strncmp(read_password,password,strlen(read_password))==0)
 66     {
 67         printw("%s","correct");
 68         break;
 69     }
 70     else
 71     {
 72         addstr("wroing");
 73         sleep(2);
 74         clear();
 75     }
 76     refresh();
 77     }
 78
 79     clear();
 80     //创建新的窗口
 81
 82     int loop_x;
 83     int loop_y;
 84     WINDOW *new_window_ptr;
 85     WINDOW *popup_window_ptr;
 86     char a_letter=‘a‘;
 87     mvprintw(5,5,"%s","the multiple windows");
 88     refresh();
 89     for(loop_x=0;loop_x<LINES-1;loop_x++)
 90     {
 91         for(loop_y=0;loop_y<COLS-1;loop_y++)
 92         {
 93
 94             mvwaddch(stdscr,loop_x,loop_y,a_letter);
 95             a_letter++;
 96             if(a_letter>‘z‘)
 97                 a_letter=‘a‘;
 98         }
 99     }
100     refresh();
101     sleep(2);
102
103     new_window_ptr=newwin(30,20,5,5);
104     mvwprintw(new_window_ptr,2,2,"%s","hello my gril");
105     wrefresh(new_window_ptr);   //对新建窗口进行刷新
106     sleep(2);
107
108     a_letter=‘0‘;
109     for(loop_x=0;loop_x<LINES-1;loop_x++)
110     {
111         for(loop_y=0;loop_y<COLS-1;loop_y++)
112         {
113
114             mvwaddch(stdscr,loop_x,loop_y,a_letter);
115             a_letter++;
116             if(a_letter>‘9‘)
117                 a_letter=‘0‘;
118         }
119     }
120     refresh();
121     sleep(2);
122     wrefresh(new_window_ptr);   //对新建窗口进行刷新
123     sleep(2);
124
125     touchwin(new_window_ptr);
126     wrefresh(new_window_ptr);
127     sleep(2);
128
129     popup_window_ptr=newwin(20,30,8,8);  //再创建一个新的窗口
130     box(popup_window_ptr,‘|‘,‘-‘);
131     mvwprintw(popup_window_ptr,5,2,"%s","hello i am the pop_window");
132     wrefresh(popup_window_ptr);
133     sleep(2);
134
135     //对两新的窗口不断的进行输出
136     touchwin(new_window_ptr);
137     wrefresh(new_window_ptr);
138     sleep(2);
139     wclear(new_window_ptr);
140     wrefresh(new_window_ptr);
141     sleep(2);
142     delwin(new_window_ptr);
143     touchwin(popup_window_ptr);
144     wrefresh(popup_window_ptr);
145     sleep(2);
146     wclear(popup_window_ptr);
147     wrefresh(popup_window_ptr);
148     sleep(2);
149     delwin(popup_window_ptr);
150     touchwin(stdscr);
151     refresh();
152     sleep(2);
153
154     endwin();
155     exit(EXIT_SUCCESS);
156 }

这个程序是对键盘输入和对创建多窗口的一个例子。

时间: 2024-10-10 18:34:14

curses和窗口的相关文章

终端开发补充 : 读 curses模块官方文档...

curses是一个提供终端屏幕打印和键盘处理的库, 我个人的理解就是终端里的gui(当然它是基于文本的)... 写2048的时候用到了这个库, 所以现在过来好好研究一下这个库... 下面是文档内容 : 首先在你做任何事之前, 你必须先调用 initscr() 初始化curses, 这个函数主要的作用是决定当前终端的类型, 然后发送一些必要的设置给终端, 并且创建独立的内部数据结构. 如果成功初始化的话, 该函数会返回一个代表屏幕的对象, 我们通常称为 stdscr (C语言就有的惯例). 另一方

Linux Curses编程实现贪吃蛇

curses库 简单而言,提供UNIX中多种终端 操作光标和显示字符 的接口.我们常见的vi就是使用curses实现的.现在一般都用ncurses库. Linux下curses函数库    Linux curses库使用      这两篇文章很详细地介绍了curses,在此就不重复了. ubuntu安装curses函数库 >sudo apt-get install ncurses-dev 用curses库,编译程序: gcc program.c -o program -lcurses 2.工作原

子窗口

使用下面两个函数来进行创建子窗口 #include<curses,h> WINDOW *subwin(WINDOW *parent,int num_of_lines,int num_of_cols,int start_y,int start_x); int delwin(WINDOW *window_to_delete); 1 #include<unistd.h> 2 #include<stdlib.h> 3 #include<curses.h> 4 int

使用 curses 函数库管理基于文本的屏幕

curses 函数库提供了终端无关的方式来编写全屏幕的基于字符的程序.curses 还可以管理键盘,提供了一种简单易用的非阻塞字符输入模式. curses 函数库能够优化光标的移动并最小化需要对屏幕进行的刷新,从而也减少了必须向字符终端发送的字符数目. curses 函数库有多种不同的实现版本.Linux 使用的是 ncurses(new curses),可以使用 sudo apt-get install libncurses5-dev 安装. 在编译时使用 -lncurses 选项来链接 cu

python curses使用

python 中curses封装了c语言的curses,把c中复杂部分简单化,比如addstr(),mvaddstr(),mvwaddstr()合并成了一个addstr()方法. 一.语法入门 1.打开和关闭一个curses 应用程序 在任何代码执行前都先要初始化curses.初始化操作就是调用initscr()函数,如下.该函数根据不同设备返回一个window对象代表整个屏幕,这个window对象通常叫做stdscr,和c语言报错一致. import curses stdscr = curse

linux 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

Extjs——窗口

Ext中的窗口主要包括Ext.Window窗口和Ext.MessageBox对话框.          Ext.Window窗口 1.Ext.Window窗口的常用属性: 2.窗口分组: 窗口分组有Ext.WindowGroup类定义,该类包括bringToFront(),getActive(),hideAll(),sendToBack()等函数,可以用来操作分组中的窗口. <script type="text/javascript"> var i = 0; functio

微信小程序(4)--二维码窗口

微信小程序二维码窗口: <view class="btn" bindtap="powerDrawer" data-statu="open">button</view> <!--mask--> <view class="drawer_screen" bindtap="powerDrawer" data-statu="close" wx:if=&qu

iframe中的模态框遮罩父窗口原理

关键点: css的position定位为fixed或absolute css的z-index, 最顶层的值最大如遮罩层为0那么弹出框最好是大于等于1的整数,总之记住弹出层要比遮罩的z-index值大就行 如果弹出模态框的使用场景没有嵌套在iframe或frame中掌握以上两点加上点css功底就可以写出漂亮的模态框了 特殊场景会涉及到跨域问题,可以在父页面和子页面分别设置<script type="text/javascript">document.domain="