9.LinuxGUI编程-NCurses(二).pptVIP

  • 16
  • 0
  • 约9.56千字
  • 约 45页
  • 2017-07-09 发布于河南
  • 举报
9.LinuxGUI编程-NCurses(二)

* * 之后不讲了……………………….. * 菜单库 菜单库对cureses基础库进行了很好的扩展。你可以通过这个库所提供的函数方便的创建菜单。如果你想让它更美观,可以定制它的显示效果。下面我们就来看看这个库。 菜单是一个用来帮助用户选择子菜单项的屏幕。简而言之,菜单就是一个菜单项的集合,使你可以方便的从中选择相应的菜单命令。 使用菜单库 一个菜单程序大致的控制流程如下: 1. 初始化curses。 2. 用函数new_item()创建菜单项,同时为菜单项指定名称并且描述其相应的功能。 3. 用函数new_menu()创建菜单,同时指定要添加的菜单项。 4. 用函数post_menu()递送菜单并刷新屏幕 5. 用一个循环处理用户的菜单请求。并用menu_driver()函数对菜单做必要的更新。 6. 用unpost_menu()取消菜单递送。 7. 用free_menu()释放分配给菜单的内存 8. 用free_item()释放分配给菜单项的内存 9. 结束curses 编译包含菜单库的程序 要使用面板库里的函数,你首先要把menu .h这个头文件包含到你的代码中,同时编译并连接与面板库相关的程序必须添加-lmenu和 –lncurses两个参数。 #include menu.h 编译和连接: gcc program file -lmenu –lncurses 菜单库例子2-1 #include curses.h #include menu.h #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) #define CTRLD 4 char *choices[] = {“Choice 1”,Choice 2,Choice 3, Choice 4, Exit }; int main() { ITEM **my_items; int c; MENU *my_menu; int n_choices, i; ITEM *cur_item; initscr();cbreak();noecho(); keypad(stdscr, TRUE); n_choices = ARRAY_SIZE(choices); my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *)); for(i = 0; i n_choices; ++i) my_items[i] = new_item(choices[i], choices[i]); 菜单库例子2-2 my_items[n_choices] = (ITEM *)NULL; my_menu = new_menu((ITEM **)my_items); mvprintw(LINES - 2, 0, F1 to Exit); post_menu(my_menu); refresh(); while((c = getch()) != KEY_F(1)) { switch(c) { case KEY_DOWN: menu_driver(my_menu, REQ_DOWN_ITEM); break; case KEY_UP: menu_driver(my_menu, REQ_UP_ITEM); break; } } free_item(my_items[0]); free_item(my_items[1]); free_menu(my_menu); endwin(); } 表单库 当你看到网页上处理用户数据的表单(Forms)时,你肯定很想在字符控制台模式下创建一个那样的表单。用普通的ncurses函数创建那样的表单十分困难。而表单库(Form Library)为我们提供了一个基本的框架,使我们可以很容易地创建和维护表单。它包含了很多用来管理,动态扩展表单域的函数。 表单库的使用 编写含有表单的程序,一般步骤如下: 1.???初始化并进入curses 2.???用new_field()函数创建表单域。你可以指定域的高度,宽度以及它在表单中的位置。 3.???指定已创建的表单域所作用的表单,并用new_form()函数创建表单。 4.???用post_form()函数来递送表单,并刷新屏幕。 5.???用一个循环来处理用户请求,通过form_driver()函数对表单做相应的更新。 6.???用unpost_form()函数取消表单的递送。 7.???用 free_form()函数释放已分配给表单的内存。 8.???用 free_field

文档评论(0)

1亿VIP精品文档

相关文档