⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu.c

📁 《Linux程序设计权威指南》源代码
💻 C
字号:
	/* File: menu.c */	#include <curses.h>	#include <menu.h>	#include <stdlib.h>	#include <ctype.h>	static const char *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);		//设置为5行单列的菜单		set_menu_format(mymenu, 5, 1);		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 + -