📄 实例11-10.c
字号:
#include<curses.h>
#include<menu.h>
#include<stdlib.h>
#include<ctype.h>
static
const *months[]
{"January","Febrary","March","April","May","June","July","August","september","October"
,"November","December",NULL};
#define N_ITEMS sizeof(months)/sizeof(months[0])
int main(int argc,char *argv[])
{
int i;
int ch;
int mrows,mcols;
WINDOW *win,*subwin;
ITEM *items[N_ITEMS];
MENU *mymenu;
if(initscr()==NULL) { /*初始化*/
perror("initcurs");
exit(EXIT_FAILURE);
}
cbreak();
noecho();
keypad(stdscr,TRUE);
for(i=0;i< N_ITEMS;i++) {/*建立菜单项*/
items[i]=new_item(months[i]," ");
}
mymenu=new_menu(items);/*建立菜单*/
set_menu_format(mymenu,5,1);/*设置为5行单列的菜单*/
set_menu_mark(mymenu,"*");
scale_menu(mymenu,&mrows,&mcols);/*获得菜单的行数很列数*/
win=newwin(mrows+2,mcols+2,3,30);/*建立窗口和子窗口*/
keypad(win,TRUE);
box(win,0,0);
subwin=derwin(win,0,0,1,1);
set_menu_sub(mymenu,subwin);/*设置菜单的窗口*/
post_menu(mymenu);/*在子窗口上放置菜单*/
refresh();
wrefresh(win);
while(toupper(ch=wgetch(win)) !='\n') /*获得输入*/
{
if(ch==KEY_DOWN)
menu_driver(mymenu,REQ_DOWN_ITEM);
else if(ch==KEY_RIGHT)
menu_driver(mymenu,REQ_RIGHT_ITEM);
else if(ch==KEY_UP)
menu_driver(mymenu,REQ_UP_ITEM);
else if(ch==KEY_LEFT)
menu_driver(mymenu, REQ_LEFT_ITEM);
}
mvprintw(LINES-2,0,"You chose:%s\n",
item_name(current_item(mymenu)));
refresh();
unpost_menu(mymenu);
getch();
free_menu(mymenu);
for(i=0;i< N_ITEMS;i++)
free_item(items[i]);
endwin();
exit(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -