📄 tool.h
字号:
/***************************************************** PROGRAM: tool.h **** AUTHOR: **** WRITE DATE: **** LAST MODIFY DATE: **** COMMENT: 下拉式菜单(彩色)界面工具函数 **** *****************************************************/#ifndef TOOL_H#define TOOL_H#include <curses.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <math.h>#include <time.h>#include <memory.h>#include <sys/types.h>#include <sys/ioctl.h>#define REV_SHOW 1 /* 反显 */#define NOM_SHOW 0 /* 正显 */#define COLOR 1 /* 彩色 */#define BLACK_WHITE 0 /* 黑白 *//* 颜色 */#define BLACK ( short )COLOR_BLACK #define RED ( short )COLOR_RED #define GREEN ( short )COLOR_GREEN #define YELLOW ( short )COLOR_YELLOW #define BLUE ( short )COLOR_BLUE #define MAGENTA ( short )COLOR_MAGENTA #define CYAN ( short )COLOR_CYAN #define WHITE ( short )COLOR_WHITE /* 调色板类型 */#define TEXT_PATTERN 1 /* 正文调色板 */#define BOARD_PATTERN 2 /* 边框调色板 */#define TITLE_PATTERN 3 /* 抬头调色板 */#define HIGHT_PATTERN 4 /* 高亮调色板 */#define BACK_PATTERN 5 /* 背景调色板 */#define VERSION_PATTERN 6 /* 版本行调色板 */#define MESSAGE_PATTERN 7 /* 提示行调色板 *//* boardtype 边框类型 */#define NO_BOARD 9 /* 无框 */#define BOLD_BOARD 0 /* 粗框 */#define REGULAR_BOARD 1 /* 细框 *//* windowtype 窗口属性 */#define WIN_SHADOW 0x0001 /* 有阴影 */#define WIN_NO_SHADOW 0x0002 /* 无阴影 */#define WIN_TITLE 0x0004 /* 有抬头 */#define WIN_NO_TITLE 0x0008 /* 无抬头 */#define WIN_BOARD 0x0010 /* 有边框 */#define WIN_NO_BOARD 0x0020 /* 无边框 */#define IS_WIN_SHADOW( x ) ( ( x & WIN_SHADOW ) == WIN_SHADOW )#define IS_WIN_NO_SHADOW( x ) ( ( x & WIN_NO_SHADOW ) == WIN_NO_SHADOW )#define IS_WIN_TITLE( x ) ( ( x & WIN_TITLE ) == WIN_TITLE )#define IS_WIN_NO_TITLE( x ) ( ( x & WIN_NO_TITLE ) == WIN_NO_TITLE )#define IS_WIN_BOARD( x ) ( ( x & WIN_BOARD ) == WIN_BOARD )#define IS_WIN_NO_BOARD( x ) ( ( x & WIN_NO_BOARD ) == WIN_NO_BOARD )/* fieldtype 字段类型 */#define FIELD_BEG 0x8000 /*字段开始*/ #define FIELD_END 0x0400 /* 字段结束*/ #define FIELD_PWD 0x0200 /*密码字段 hidden */#define FIELD_SKP 0x0100 /*禁止进入 */#define FIELD_NOT 0x0080 /*非数据库字段配合FIELD_SKP */#define FIELD_MKP 0x0040 /*修改时禁止进入 */#define FIELD_DSP 0x0020 /*数据库中字段,不显示*/#define FIELD_FLT 0x0001 /*浮点类型 */#define FIELD_STR 0x0002 /*字符类型 */#define FIELD_DIG 0x0003 /*数字类型 */#define FIELD_MON 0x0004 /*货币类型 */#define FIELD_DAT 0x0005 /*日期类型 */#define FIELD_LOG 0x0006 /*long*/#define FIELD_SHT 0x0007 /*short*/#define FIELD_TYM 0x0008 /*YYYYMMDDHHMM*//**#define FIELD_TIY 0x0009 tinyint*/#define FIELD_TYPE(x) (x&0x000f)#define IS_FIELD_BEG( x ) ( ( x & FIELD_BEG ) == FIELD_BEG )#define IS_FIELD_FLT( x ) ( ( x & FIELD_FLT ) == FIELD_FLT )#define IS_FIELD_STR( x ) ( ( x & FIELD_STR ) == FIELD_STR )#define IS_FIELD_DIG( x ) ( ( x & FIELD_DIG ) == FIELD_DIG )#define IS_FIELD_MON( x ) ( ( x & FIELD_MON ) == FIELD_MON )#define IS_FIELD_DAT( x ) ( ( x & FIELD_DAT ) == FIELD_DAT )#define IS_FIELD_LOG( x ) ( ( x & FIELD_LOG ) == FIELD_LOG )#define IS_FIELD_TYM( x ) ( ( x & FIELD_TYM ) == FIELD_TYM )#define IS_FIELD_TIY( x ) ( ( x & FIELD_TIY ) == FIELD_TIY )#define IS_FIELD_SKP( x ) ( ( x & FIELD_SKP ) == FIELD_SKP )#define IS_FIELD_DSP( x ) ( ( x & FIELD_DSP ) == FIELD_DSP )#define IS_FIELD_PWD( x ) ( ( x & FIELD_PWD ) == FIELD_PWD )#define IS_FIELD_NOT( x ) ( ( x & FIELD_NOT ) == FIELD_NOT )#define IS_FIELD_END( x ) ( ( x & FIELD_END ) == FIELD_END ) #define IS_FIELD_MKP( x ) ( ( x & FIELD_MKP ) == FIELD_MKP )/* 数据窗口功能*/#define DATA_NOT 0x0000 /* 数据不操作 */#define DATA_INQ 0x0001 /* 数据查询 */#define DATA_ADD 0x0002 /* 数据增加 */#define DATA_MOD 0x0004 /* 数据修改 */#define DATA_DEL 0x0008 /* 数据删除*/ #define IS_DATA_INQ( x ) ( ( x & DATA_INQ ) == DATA_INQ )#define IS_DATA_ADD( x ) ( ( x & DATA_ADD ) == DATA_ADD ) #define IS_DATA_MOD( x ) ( ( x & DATA_MOD ) == DATA_MOD )#define IS_DATA_DEL( x ) ( ( x & DATA_DEL ) == DATA_DEL )/* 检查函数返回成功*/#define CHECK_SUCCESS 0 #define SYSTEM_RET -99 /* 数据空值*/#define TINY_NULL 255#define INT_NULL -100#define DOUBLE_NULL -100.00/* 命令提示*/#define CLEAR_SCR 0x01#define WAIT_ENTER 0x02#define WAIT_ENTER_KEY "echo \"\n\n请按 [ENTER] 键 ... \\c\"; read a"/* 对话框类型 */#define YES_NO_BOX 0#define OK_CANCEL_BOX 1#define YES_NO_CANCEL_BOX 2#define RETRY_ABORD_CANCEL_BOX 3#define CONFIRM_BOX 4/* 对话框返回 */#define CANCEL 1 /* 取消 */#define YES 2 /* 是 */#define NO 3 /* 否 */#define RETRY 4 /* 重试 */#define ABORD 5 /* 放弃 */extern int HasColors; /* 是否支持彩显 */extern char _SysOperNo[4]; /* 操作员号 */extern char _SysOperRight[11]; /* 操作员权限 *//* 调色板 */typedef struct colorpattern { short textcolor[2]; /* 正文色 */ short boardcolor[2]; /* 边框色 */ short titlecolor[2]; /* 抬头色 */ short hightcolor[2]; /* 高亮色 */}COLORPATTERN;/* 窗口 */typedef struct win { WINDOW *win; /* 窗口指针 */ int row; /* 起始行 */ int col; /* 起始列 */ int height; /* 窗口高 */ int width; /* 窗口宽 */ int boardtype; /* 边框类型 */ char *title; /* 窗口抬头 */}WINDOWS; /* 窗口堆栈链表 */typedef struct winlink { WINDOWS *thiswindow; /* 窗口指针 */ struct winlink *prevwinnode; /* 父窗口链表 */ struct winlink *nextwinnode; /* 子窗口链表 */}WINDOWLINK;/* 选项及其说明 */typedef struct item { char *item; /* 选项 */ char *message; /* 说明 */ int ( *callfunc )(); /* 执行函数 */}ITEMS;/* 下拉菜单 */typedef struct menu { WINDOWS *menuwin; /* 菜单窗口 */ ITEMS *items; /* 菜单选项 */ int lastoption; /* 选中 */}MENU; /* 水平菜单 */typedef struct pad { int row; /* 起始行 */ int col; /* 起始列 */ WINDOW *win; /* 所在窗口 */ ITEMS *items; /* 水平菜单选项 */ int itemnum; /* 选项个数 */ int lastoption; /* 选中 */}PAD;/* 输入字段 */typedef struct iptfld{ int row; int col; char *fldnote; char *fldmessage; char *fldname; void *flddata; int fldlen; ushort fldtype; int ( *beforecall )(); int ( *aftercall )();}INPUTFIELD;/* 注释: 离开字段后的调用函数返回SUCCESS则进入下一字段 返回FALSE则重新录入该字段 */typedef struct scr_st{ INPUTFIELD *infld; int (*atfer_getscr)();} SCREEN_ST;/********************************************************** 函 数 名: InitSystem 功 能: 系统初始化 入口参数: 返 回 值: 无 调用方法: InitSystem();**********************************************************/ int InitSystem();int InitColorSystem();/********************************************************** 函 数 名: InitWindowLink 功 能: 初始化窗口链表 入口参数: 无 返 回 值: 无 调用方法: InitWindowLink();**********************************************************/ int InitWindowLink();/********************************************************** 函 数 名: AddToWindowLink 功 能: 加入新窗口到窗口链表 入口参数: WINDOWS *NewWin 返 回 值: TRUE 成功 FALSE 失败 调用方法: AddToWindowLink( newwin );**********************************************************/ int AddToWindowLink( WINDOWS *NewWin );/********************************************************** 函 数 名: DeleteFromWindowLink 功 能: 从窗口链表中删除一个窗口 入口参数: WINDOWS *TheWin 返 回 值: TRUE 成功 FALSE 失败 调用方法: DeleteFromWindowLink( thewin );**********************************************************/ int DeleteFromWindowLink( WINDOWS *TheWin );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -