📄 menulib.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 + -