📄 menu.h
字号:
#ifndef _SETTLEMENU_H_
#define _SETTLEMENU_H_
#include <stdio.h>
#include <curses.h>
#include <ctype.h>
#define MENU_add "/view/match.add" /* 附加菜单项定义文件 */
#define MENU_f "/view/match.menu" /* 菜单文件 */
#if 0
/* 已改为使用全局变量GV_help_file */
#define HELP_f "/view/match.help" /* 帮助文件 */
#endif
#define MAXITEM 256 /* 最大菜单选择项数 */
#define MAXSCR 128 /* 最大菜单屏数 */
#define WIDTH1 50 /* 选择项名最大宽度 */
#define WIDTH2 80 /* 选择项说明最大宽度 */
#define ERR_MENU -1 /* 出错状态 */
#define NORMAL 0 /* 正常状态 */
#define CLOSE 1 /* 关闭菜单 */
#define OPEN_LEFT 2 /* 弹出左边菜单 */
#define OPEN_RIGHT 3 /* 弹出右边菜单 */
struct S_item_info_struc {
int iHeadItem;
int iTailItem;
} SItemInfo[MAXITEM];
struct S_menu_a {
int iFatherMenu; /* 父菜单号 (数组下标) */
int iFatherMenuItem; /* 父菜单选择项号 */
int iItem; /* 最新选择项名 */
int x,y,l,h;
int iPageItem; /* 须分屏显示的选择项 */
} SMenuActiveStatus[MAXSCR];
struct S_menu_item_struc {
int (*mproc)(); /* 激活菜单完成操作 */
int iChildMenu; /* 子菜单号 (数组下标号) */
char sName[WIDTH1+1]; /* 菜单选择项名 */
char sText[WIDTH2+1]; /* 选择项说明 */
char cFirstChar; /* 选择项首字母 */
int iPower; /* 权限(0禁用,1可用) */
char cProcType; /* 处理类型 M:子菜单 E:退出菜单 */
/* X:shell命令;F:函数调用 */
char sShell[128]; /* 当proc_type='X'时,shell命令串 */
char cReplace; /* 菜单操作是否可被程序替换 */
int (*preprog)(); /* 执行菜单操作前,须执行的操作 */
char cCheckPwd; /* 选择菜单项时,是否须主管用户口令 */
char sHelpId[11]; /* 选择项的帮助信息标识号 */
char sItemId[11]; /* 菜单项标识号,用于外部文件定义 */
/* 使用此号查找菜单项的数组下标 */
char sParam[30];
};
#define MAX_MENU_ITEMS MAXITEM /* 最大SMenuItem[]项 */
extern struct S_menu_item_struc SMenuItem[MAX_MENU_ITEMS];
extern iMenuItemCount;
extern WINDOW *menu_win;
typedef struct S_proc_st {
char sNote[WIDTH2+1];
int (*p_proc)();
char sName[WIDTH1+1];
} PROC_T;
extern PROC_T proctab[];
struct S_menu_struc {
char sMenuName[WIDTH1]; /* 菜单名称 */
int iLocateY; /* 显示坐标 Y */
int iLocateX; /* 显示坐标 X */
int iDispFormat; /* 显示格式 (0:横排,1:纵排) */
char cReplace; /* 0-不可修改坐标及显示格式 */
/* 1-可修改 */
char sMenuId[11]; /* 菜单标识号 */
int iMenuItemSet[MAXITEM]; /* 子菜单集合, 必须以-1结束 */
};
#define MAX_MENUS 128 /* 最大SMenu[]项数 */
extern struct S_menu_struc SMenu[MAX_MENUS];
extern iMenuCount;
int DispMenu(WINDOW *, int, int *, FILE *);
int DealMenu(int, FILE *);
int GetMenu(FILE *, FILE *);
int GetAddMenu(FILE *);
int GetItemOrd(char *);
int GetMenuOrd(char *);
int GetActiveMenu(FILE *);
int GetItemInfo(int, FILE *);
void DispItem1(WINDOW *, int, int);
int DispMenu(WINDOW *, int, int *, FILE *);
int DispMenu0(WINDOW *, int, int *);
int DispMenu1(WINDOW *, int, int *);
int InitItemInfo( WINDOW *, int, FILE *);
int DispMainMenu(WINDOW *, int);
int ClearMenu(WINDOW *, int);
int DispFrame(WINDOW *);
int DispBelow(char *);
int FunKeyHelp(char *);
int GetWinParam(WINDOW *);
int PromptBottomRight(int, int, int, char *);
int PromptBottom(int, int, int, char *);
int PormptTopRight(int, int, int, char *);
int PromptTop(int, int, int, char *);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -