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

📄 window.h

📁 小型通讯程序的C语言源程序的C语言源程序库
💻 H
字号:
/* * This file is part of the Minicom Communications Program, * written by Miquel van Smoorenburg 1991/1992/1993. * * Window Header File. * * 1991/10/09 Miquel van Smoorenburg. *//* * One character is contained in a "ELM" */typedef struct _elm {  char value;  char attr;  char color;} ELM;/* * Control struct of a window */typedef struct _win {  int x1, y1, x2, y2;	/* Coordinates */  int sy1, sy2;		/* Scrolling region */  int xs, ys;		/* x and y size */  char border;		/* type of border */  char cursor;		/* Does it have a cursor */  char attr;		/* Current attribute of window */  char color;		/* Current color of window */  char autocr;		/* With '\n', do an automatic '\r' */  char doscroll;	/* Automatically scroll up */  char wrap;		/* Wrap around edge */  char direct;		/* Direct write to screen ? */  short curx, cury;	/* current x and y */  char o_cursor;  short o_curx;  short o_cury;  char o_attr;  char o_color;		/* Position & attributes before window was opened */  ELM *map;		/* Map of contents */  ELM *histbuf;		/* History buffer. */  int histlines;	/* How many lines we keep in the history buffer */  int histline;		/* Current line in the history buffer. */} WIN;/* * Stdwin is the whole screen */extern WIN *stdwin;	/* Whole screen */extern int LINES, COLS; /* Size of sreen */extern int usecolor;	/* Use ansi color escape sequences */extern int useattr;	/* Use attributes (reverse, bold etc. ) */extern int dirflush;	/* Direct flush after write */extern int literal;	/* Literal pass-through of all characters? */extern int w_init;	/* Already initialized? *//* * Possible attributes. */#define A_NORMAL	 0 #define A_BLINK		 1#define A_BOLD		 2#define A_REVERSE	 4#define A_STANDOUT	 8#define A_UNDERLINE	16#define A_ALTCHARSET	32#define A_BLANK		64/* * Possible colors */#define BLACK		0#define RED		1#define GREEN		2#define YELLOW		3#define BLUE		4#define MAGENTA		5#define CYAN		6#define WHITE		7#define COLATTR(fg, bg) (((fg) << 4) + (bg))#define COLFG(ca)	((ca) >> 4)#define COLBG(ca)	((ca) % 16)/* * Possible borders. */#define BNONE	0#define BSINGLE 1#define BDOUBLE 2/* * Scrolling directions. */#define S_UP	1#define S_DOWN	2/* * Cursor types. */#define CNONE	0#define CNORMAL	1/* * Title Positions */#define TLEFT	0#define TMID	1#define TRIGHT	2/* * For wselect. */#define NIL_FUNLIST	((void (**)()) 0)#define NIL_FUN		((void (*)()) 0)#define MENU_END	((char *) 0)#define CNULL		((char *)0)#define NIL_WIN         (WIN *) 0/* * Function prototypes. */#ifndef _PROTO#  if __STDC__#    define _PROTO(fun, args) fun args#  else#  define _PROTO(fun, args) fun()#  endif#endif_PROTO( int getch, ( void ));_PROTO(void wflush, ( void ));_PROTO(WIN *wopen, ( int x1 , int y1 , int x2 , int y2 , int border ,		int attr , int fg , int bg , int direct , int hl , int rel ));_PROTO(void wclose, ( WIN *win , int replace ));_PROTO(void wleave, ( void ));_PROTO(void wreturn, ( void ));_PROTO(void wresize, (WIN *w, int x, int y ));_PROTO(void wredraw, ( WIN *w , int newdirect ));_PROTO(void wscroll, ( WIN *win , int dir ));_PROTO(void wlocate, ( WIN *win , int x , int y ));_PROTO(void wputc, ( WIN *win , int c ));_PROTO(void wdrawelm, ( WIN *win, int y, ELM *e ));_PROTO(void wputs, ( WIN *win , char *s ));/* Should use stdarg et al. */int wprintf();_PROTO(void wbell, ( void ));_PROTO(void wcursor, ( WIN *win , int type ));_PROTO(void wtitle, ( WIN *w , int pos , char *s ));_PROTO(void wcurbar, ( WIN *w , int y , int attr ));_PROTO(int wselect, ( int x , int y , char **choices , void (**funlist)() ,	char *title , int attr , int fg , int bg ));_PROTO(void wclrel, ( WIN *w ));_PROTO(void wclreol, ( WIN *w ));_PROTO(void wclrbol, ( WIN *w ));_PROTO(void wclreos, ( WIN *w ));_PROTO(void wclrbos, ( WIN *w ));_PROTO(void winclr, ( WIN *w ));_PROTO(void winsline, ( WIN *w ));_PROTO(void wdelline, ( WIN *w ));_PROTO(void winschar, ( WIN *w ));_PROTO(void wdelchar, ( WIN *w ));_PROTO(int wgets, ( WIN *win , char *s , int linemax, int totmax ));_PROTO(void win_end, ( void ));#ifdef BBS_PROTO(int win_init, ( char *term, int lines ));#else_PROTO(int win_init, ( int fg , int bg , int attr ));#endif/* * Some macro's that can be used as functions. */#define wsetregion(w, z1, z2) (((w)->sy1=(w)->y1+(z1)),((w)->sy2=(w)->y1+(z2)))#define wresetregion(w) ( (w)->sy1 = (w)->y1, (w)->sy2 = (w)->y2 )#define wgetattr(w) ( (w)->attr )#define wsetattr(w, a) ( (w)->attr = (a) )#define wsetfgcol(w, fg) ( (w)->color = ((w)->color & 15) + ((fg) << 4))#define wsetbgcol(w, bg) ( (w)->color = ((w)->color & 240) + (bg) )#define wsetam(w) ( (w)->wrap = 1 )#define wresetam(w) ( (w)->wrap = 0 )/* * Allright, now the macro's for our keyboard routines. */#define K_BS		8#define K_ESC		27#define K_STOP		256#define K_F1		257#define K_F2		258#define K_F3		259#define K_F4		260#define K_F5		261#define K_F6		262#define K_F7		263#define K_F8		264#define K_F9		265#define K_F10		266#define K_HOME		267#define K_PGUP		268#define K_UP		269#define K_LT		270#define K_RT		271#define K_DN		272#define K_END		273#define K_PGDN		274#define K_INS		275#define K_DEL		276#define NUM_KEYS	21#define KEY_OFFS	256#ifndef EOF#  define EOF		((int) -1)#endif#define K_ERA		'\b'#define K_KILL		((int) -2)/* Internal structure. */struct key {	char *cap;	char len;};

⌨️ 快捷键说明

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