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

📄 menulib.h

📁 用C语言实现的字符型的菜单界面
💻 H
字号:
#ifndef MENU_H#define MENU_H#include "curlib.h"/* LINTLIBRARY */#define MAX_MENU_LEVEL	10/* menu style */#define MENU_POPUP		0x0001#define MENU_PULLDOWN		0x0002#define MENU_SITE_RIGHT		0x0080#define MENU_SITE_CENTER	0x0100#define MENU_SITE_LEFT		0x0200#define MENU_ACCEPT_NUMBER	0x0400#define MENU_DISP_NUMBER	0x0800#define MENU_DIRECT_ACCEPT	0x1000#define MENU_ACCEPT_RIGHT	0x2000#define MENU_RETURN_ID		0x4000#define MENU_EXEC_FUNC		0x8000#define MENU_EXEC_PROC		0x10000#define MENU_BOX				0x20000/* menu flag */#define NONE			0x00#define MF_GRAYED		0x01#define MF_ENABLED		0x02#define MF_CHECKED		0x04#define MF_UNCHECKED		0x08/* Error code */#define ERR_OPEN_FILE		-1#define ERR_READ_FILE		-2#define ERR_FORMAT		-3#define ERR_MEMORY		-5#define ERR_LEVEL		-6#define ERR_NO_SYMBOL		-7#define ERR_NO_KEYWORD		-8#define ERR_CREATE_WINDOW	-9#define ERR_CREATE_MENU		-10/* Keyword define */#define KEYWORD_BEGIN		0#define KEYWORD_POPUP		1#define KEYWORD_MENUITEM	2#define KEYWORD_END		3#define KEYWORD_WINDOWSTYLE	4#define KEYWORD_MENUSTYLE	5#define KEYWORD_MENUCOLOR	6#define KEYWORD_MENUATTR	7#define KEYWORD_MENUTITLE	8#define KEYWORD_MENUCOPYRIGHT	9#define KEYWORD_MENUPROMPT	10/*----------------------------------------------------------------------------*/#ifndef UCHAR	#define UCHAR	typedef unsigned char 	uchar;#endif/*#ifndef ULONG	#define ULONG	typedef unsigned long	ulong;#endif*//* Menu item define */typedef struct menuitem_s {	int id;	char *proc;		/* Process name */	char *text;	char *htext;	/* Help text */	chtype flag;	/* CHECKED, UNCHECKED, GRAYED, ENABLED */	uchar index;		uchar site;		/* y or x coordinate */	struct menuitem_s *next;	struct menuitem_s *prev;	struct menu_s *child;} menuitem_t;/* Menu windows define */typedef struct menu_s {	window_t *win;	menuitem_t *hitem;	/* header item ptr */	menuitem_t *citem;	/* current item ptr */	struct menu_s *parent;} menu_t;typedef struct {	char *copyright;	uchar disp_copyright_flag;	/* 0: not display 1: display && clear 2: always display */	uchar status;		/* 0: init 1: pulldown */	uchar sy;	uchar sx;	uchar interval;		/* only for pulldown's top menu */	menu_t *menu;} menuhead_t;/*----------------------------------------------------------------------------*/extern char MenuTitle[128];	/* 菜单标题,可修改 */extern char DefaultMsg[128];	/* 缺省提示信息,可修改 *//*----------------------------------------------------------------------------* * Function: 初始化菜单. * Argument:  *           char *menufile - 菜单数据文件. * Return  :  *           >= 0 成功. *           <  0 失败. *----------------------------------------------------------------------------*/extern int menu_init(char *menufile);/*----------------------------------------------------------------------------* * Function: 菜单主循环. * Argument: *           None. * Return  :  *           > 0 被选择的菜单id. *           = 0 按了ESC键或'0'. *----------------------------------------------------------------------------*/extern int menu_select();/*----------------------------------------------------------------------------* * Function: 获得指定的菜单项的状态. * Argument: *           menu_t *hmenu - 菜单句柄(即菜单的入口指针). *           int position - 指定菜的单项的位置(1...n). *           uchar *flag - 控制标志:MF_ENABLED,MF_GRAYED,MF_CHECKED,MF_UNCHECKED * Return  :  *           >= 0 菜单项的先前状态. *           <  0 菜单项不存在或是一分隔符. *----------------------------------------------------------------------------*/extern int get_menuitem_status(menu_t *hmenu,int position,uchar *flag);/*----------------------------------------------------------------------------* * Function: 允许,禁止或变灰指定的菜单项. * Argument: *           menu_t *hmenu - 菜单句柄(即菜单的入口指针). *           int position - 指定菜的单项的位置(1...n). *           uchar flag - 控制标志:MF_ENABLED,MF_GRAYED,MF_CHECKED,MF_UNCHECKED * Return  :  *           >= 0 菜单项的先前状态. *           <  0 菜单项不存在或是一分隔符. *----------------------------------------------------------------------------*/extern int set_menuitem_status(menu_t *hmenu,int position,uchar flag);/*----------------------------------------------------------------------------* * Function: 获得主菜单的句柄. * Argument: *           None. * Return  :  *           menu_t * - 菜单句柄(即菜单的入口指针). *           NULL 如果该菜单项没有子菜单或没有找到该菜单项. *----------------------------------------------------------------------------*/extern menu_t *get_menu();/*----------------------------------------------------------------------------* * Function: 获得指定的菜单项的激活的子菜单的句柄. * Argument: *           menu_t *hmenu - 菜单句柄(即菜单的入口指针). *           int position - 指定菜的单项的位置(1...n). * Return  :  *           menu_t * - 子菜单句柄(即子菜单的入口指针). *           NULL 如果该菜单项没有子菜单或没有找到该菜单项. *----------------------------------------------------------------------------*/extern menu_t *get_submenu(menu_t *hmenu,int position);/*----------------------------------------------------------------------------* * Function: 获得错误代码的信息. * Argument: *           int errcode - 错误代码. * Return  :  *           char * - 中文或英文的信息(取决 window_style). *----------------------------------------------------------------------------*/extern const char *get_errmsg(int errcode);/*----------------------------------------------------------------------------* * Function: 显示提示信息. * Argument: *           char *msg - 提示信息. * Return  :  *           None. *----------------------------------------------------------------------------*/extern void disp_prompts(char *msg);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -