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

📄 comment.cpp

📁 这是unix下的图形库,是文本图形库 非常好
💻 CPP
📖 第 1 页 / 共 5 页
字号:
					inschstr(key, pos, value);					modi = 1;					pos++;				}				else					beep();			else if (pos < len) {				value[pos] = key;				pos++;				modi = 1;			}			else				beep();		else			switch (key) {			case 3:				eflag = 0;				break;			case 10:				eflag = 0;				break;			case 9:				if (strlen(hlp) > 0) {					showtmessage(hlpy, hlpx, "[提  示]", (char *)hlp);					touchwin(win);				}				break;			case 4:				eflag = 0;				break;			case 1:				ins = !ins;				break;			case 24:				delchstr(value, pos);				modi = 1;				break;			case 260:				if (pos > 0)					pos--;				else					eflag = 0;				break;			case 259:				eflag = 0;				break;			case 258:				eflag = 0;				break;			case 25:				eflag = 0;				break;			case 16:				eflag = 0;				break;			case 261:				if (pos < rlen)					pos++;				else {					beep();					eflag = 0;				}				break;			case 8:				if (pos > 0) {					pos--;					delchstr(value, pos);					modi = 1;				} else					beep();				break;			default:				eflag = 0;				break;			}	}	if (modi)		key = -key;	return(key);}/*状态条*/WINDOW *statusbar;void	initstatusbar(void){	statusbar = newwin(1, 80, 24, 0);}void	freshstatusbar(char *str){	if (statusbar != NULL) {		wclrscr(statusbar);		mvwaddstr(statusbar, 0, 0, str);		wrefresh(statusbar);	}}/*保存当前屏幕*/int	savescr(char *scrfile){	FILE * fp;	if ((fp = fopen(scrfile, "w+")) == NULL)		return(1);	putwin(curscr, fp);	fclose(fp);	return(0);}/*恢复以前保存过的屏幕*/int	restorescr(char *scrfile){	FILE * fp;	WINDOW * win;	if ((fp = fopen(scrfile, "r+")) == NULL)		return(1);	win = getwin(fp);	fclose(fp);	remove(scrfile);	touchwin(win);	wrefresh(win);	return(0);}/*通用帮助*/int	help(char *title, char *fname, char *startstr, char *endstr){	/***			void showmessage(int,int,char *);			int savescr(char *);			void framewin(WINDOW *,int,char *,int);			void outstr(WINDOW *,int,int,int,char *);			int restorescr(char *);	***/	unsigned short	startcol = 1, hs, dqhs = 1, pos = 0, currcol;	char	info[12000][560];	int	key, i, hflag = 1, pflag = 1;	char	colstr[1200];	char	str[20][74];	char	lpcommand[40] = "lp ";	char	flagstr[4];	WINDOW * win;	FILE * fp;	char	scrname[20];	/*showmessage(10,30,"aaaasfdsafkdsf");*/	sprintf(scrname, "scrhelp%d", getpid());	if ((fp = fopen(fname, "r")) == (FILE * )0) {		showmessage(9, 30, " 打开帮助文件失败!");		return(1);	}	bzero(info, sizeof(info));	if (startstr[0] != 0)		do		 {			if (fgets(colstr, 1200, fp) == NULL)				return(2);			colstr[strlen(colstr)-1] = '\0';		} while (strcmp(colstr, startstr));	hs = 0;	if (strlen(endstr) != 0)		do		 {			if (fgets(info[hs], 1200, fp) == NULL)				return(3);			info[hs][strlen(info[hs])-1] = '\0';			strncpy(flagstr, info[hs], 3);			if ((strncmp("<<<", flagstr, 3)) && (strncmp(">>>", flagstr, 3) && (info[hs][0] != 0)))				hs++;		} while (strcmp(info[hs], endstr));else	while (!feof(fp)) {		fgets(info[hs], 1200, fp);		info[hs][strlen(info[hs])-1] = '\0';		strncpy(flagstr, info[hs], 3);		if ((strcmp("<<<", flagstr)) && (strcmp(">>>", flagstr) && (info[hs][0] != 0)))			hs++;	}info[hs][0] = 0;fclose(fp);(void)savescr(scrname);win = newwin(24, 78, 0, 0);framewin(win, '\070', title, '\017');delwin(win);wrefresh(win);win = newwin(22, 74, 1, 2);raw();keypad(win, 1);wmove(win, 21, 0);wattron(win, A_BOLD | A_STANDOUT | COLOR_PAIR('\047'));waddstr(win, "         ↑上      ↓下      →下页      ←上页      [左页      ]右页     ");wattroff(win, A_BOLD | A_STANDOUT | COLOR_PAIR('\047'));wrefresh(win);while (1){	currcol = (dqhs - 1 + 20) % 20;	if (pflag) {		for (i = 0; i < 20; i++)			if (startcol + i - 1 >= hs)				str[i][0] = 0;			else if (strlen(info[startcol-1+i]) > pos)				strncpy(str[i], &info[startcol-1+i][pos], 74);			else				str[i][0] = '\0';		for (i = 0; i < 20; i++)			outstr(win, i + 1, 0, 74, str[i]);	}	if (hflag || pflag) {		wmove(win, 0, 0);		wattron(win, A_BOLD | A_STANDOUT | COLOR_PAIR('\047'));		wprintw(win, "第%4d行  总行数%4d                                                      ", dqhs, hs);		wattroff(win, A_BOLD | A_STANDOUT | COLOR_PAIR('\047'));		wattron(win, A_REVERSE);		outstr(win, currcol + 1, 0, 74, str[currcol]);		wmove(win, currcol + 1, 0);		wattroff(win, A_REVERSE);		wrefresh(win);		hflag = 0;		pflag = 0;	}	key = wgetch(win);	switch (key) {	case 4:		clear();		refresh();		delwin(win);		(void)restorescr(scrname);		return(1);		break;	case 91:		if (pos > 0) {			pos -= 58;			pflag = 1;		}		break;	case 93:		pos += 58;		pflag = 1;		break;	case 259:		if (dqhs == 1)			beep();		else if (currcol == 0)			if (startcol > 1) {				pflag = 1;				hflag = 1;				dqhs -= 1;				startcol -= 20;			}			else				beep();		else {			outstr(win, currcol + 1, 0, 74, str[currcol]);			dqhs -= 1;			hflag = 1;		}		break;	case 258:		if (dqhs == hs)			beep();		else if (currcol == 20 - 1)			if (startcol < hs) {				pflag = 1;				hflag = 1;				dqhs += 1;				startcol += 20;			}			else				beep();		else {			outstr(win, currcol + 1, 0, 74, str[currcol]);			dqhs += 1;			hflag = 1;		}		break;	case 260:		if (startcol > 20) {			pflag = 1;			hflag = 1;			startcol -= 20;			dqhs = startcol + 20 - 1;		} else			beep();		break;	case 261:		if ((startcol + 20 - 1) < hs) {			pflag = 1;			hflag = 1;			startcol += 20;			dqhs = startcol;		} else			beep();		break;	case 16:		strcat(lpcommand, fname);		strcat(lpcommand, "  1>/dev/null" );		showmessage(4, 4, "     联好打印机");		touchwin(win);		wrefresh(win);		system(lpcommand);		break;	default:		beep();	}}}/*      通用菜单         *//*1--数据类型*//***typedef  struct{     char title[40];     char fname[30];     char startstr[20];     char endstr[20];}Ohelp;     struct Item{	char hotkey;	int y,x;    char rthelp[80];    Ohelp *olhelp;	char caption[40];	void  (*click)();	char select;	struct Item *up;	struct Item *down;	struct Item *left;	struct Item *right;};typedef struct Item ITEM;typedef struct{	WINDOW *win;	unsigned int row,pos;	int count;	char hotkeys[40];	char title[40];	ITEM *curitem;	ITEM *items;} MENU;***//*初使化活动菜单项模块1*//*#define inititem(a,b,c,d) inithitem(a,b,c,d,"")*/void	inithitem(ITEM *item, char *caption, char hotkey, void  click(), char *rthelp){	strcpy(item->caption, caption);	strcpy(item->rthelp, rthelp);	item->olhelp = NULL;	item->hotkey = hotkey;	item->click = click;	item->select = 0;}/*初始化活动菜单模块2*/void	initmenu(MENU *menu, int y, int x, char *title, int row, ITEM *items, int count){	int	i = 4, j = 0;	menu->count = count;	strcpy(menu->title, title);	menu->row = row;	menu->items = items;	menu->curitem = items;	for (menu->pos = 0; menu->pos < menu->count; menu->pos++) {		j++;		menu->hotkeys[menu->pos] = items[menu->pos].hotkey;		if (j > row)			i += (strlen(items->caption) + 8), j = 1;		menu->items[menu->pos].x = i;		menu->items[menu->pos].y = j;		menu->items[menu->pos].up = &items[(menu->pos+menu->count-1)%menu->count];		menu->items[menu->pos].down = &items[(menu->pos+menu->count+1)%menu->count];		menu->items[menu->pos].left = &items[(menu->pos+menu->count-menu->row)%menu->count];		menu->items[menu->pos].right = &items[(menu->pos+menu->count+menu->row)%menu->count];	}	menu->pos = 0;	menu->hotkeys[menu->count] = 0;	i += strlen(items->caption) + 8;	menu->win = newwin(row + 2, i, y, x);}static void	drawitem(MENU menu, ITEM  *item, int hot){	wmove(menu.win, item->y, item->x);	if (hot)		wattron(menu.win, A_STANDOUT | COLOR_PAIR('\017'));	else {		wattroff(menu.win, A_STANDOUT);		wattron(menu.win, COLOR_PAIR('\070'));	}	if (item->select == 1)		waddch(menu.win, '>');	else		waddch(menu.win, ' ');	if (item->hotkey != ' ') {		waddch(menu.win, item->hotkey);		waddstr(menu.win, "__");	} else		waddstr(menu.win, "");	waddstr(menu.win, item->caption);	wrefresh(menu.win);	if (hot)		wattroff(menu.win, A_STANDOUT | COLOR_PAIR('\017'));}static void	drawmenu(MENU menu){	int	i;	framewin(menu.win, '\070', menu.title, '\017');	for (i = 0; i < menu.count; i++) {		drawitem(menu, &menu.items[i], 0);	}	drawitem(menu, menu.curitem, 1);}/*运行活动菜单模块*/void	runmenu(MENU menu){	/***			void freshstatusbar(WINDOW *,char *);			void drawmenu(MENU);			void wclrscr(WINDOW *);			void drawitem(MENU,ITEM,int);		    int help(char *,char *,char *,char *);			int posch(char *,char);			***/	int	key, i;	ITEM * item;	char	change = 0;	FILE * fp;	WINDOW * win;	freshstatusbar(menu.curitem->rthelp);	drawmenu(menu);	(void)savetty();	item = menu.curitem;	raw();	keypad(menu.win, 1);	do {		if (change) {			freshstatusbar(menu.curitem->rthelp);			drawitem(menu, item, 0);			drawitem(menu, menu.curitem, 1);			item = menu.curitem;			change = !change;		}		key = wgetch(menu.win);		switch (key) {		case 10:			menu.curitem->select = 1;			drawitem(menu, menu.curitem, 0);			if (menu.curitem->click != NULL)				menu.curitem->click();			menu.curitem->select = 0;			freshstatusbar(menu.curitem->rthelp);			drawitem(menu, menu.curitem, 1);			touchwin(menu.win);			wrefresh(menu.win);			break;		case 259:			if ((menu.curitem->up != NULL) && menu.curitem->up != menu.curitem) {				change = 1;				menu.curitem = menu.curitem->up;				menu.pos = (menu.pos + menu.count - 1) % menu.count;			}			break;		case 258:			if ((menu.curitem->down != NULL) && menu.curitem->down != menu.curitem) {				change = 1;				menu.curitem = menu.curitem->down;				menu.pos = (menu.pos + menu.count + 1) % menu.count;			}			break;		case 260:			if ((menu.curitem->left != NULL) && menu.curitem->left != menu.curitem) {				change = 1;				menu.curitem = menu.curitem->left;				menu.pos = (menu.pos + menu.count - menu.row) % menu.count;			}			break;		case 261:			if ((menu.curitem->right != NULL) && menu.curitem->right != menu.curitem) {				change = 1;				menu.curitem = menu.curitem->right;				menu.pos = (menu.pos + menu.count + menu.row) % menu.count;			}			break;		case 4:			wstandend(menu.win);			wattroff(menu.win, A_STANDOUT | A_COLOR);			wclrscr(menu.win);			wrefresh(menu.win);			(void)resetty();			break;		case 9:			if (menu.curitem->olhelp != NULL) {				help(menu.curitem->olhelp->title, menu.curitem->olhelp->fname, menu.curitem->olhelp->startstr,				     				     menu.curitem->olhelp->endstr);			}		default:			if ((key > 40) && (key < 127)) {				if (islower(key))					key = toupper(key);				i = posch(menu.hotkeys, key);				if (i >= 0)					if ((menu.curitem->hotkey) != key) {						item = menu.curitem;						change = 1;						menu.curitem = &menu.items[i];					}			}		}	} while (key != 4);}static void	popmenu(MENU menu){	/***			void drawmenu(MENU);			void freshstatusbar(WINDOW *,char *);			void drawitem(MENU,ITEM *,int);			void wclrscr(WINDOW *);		    int help(char *,char *,char *,char *);			int posch(char *,char);			***/	int	key, i;	ITEM * item;	char	change = 0;	FILE * fp;	WINDOW * win;	drawmenu(menu);	savetty();	item = menu.curitem;	raw();	keypad(menu.win, 1);	do {		if (change) {			freshstatusbar(menu.curitem->rthelp);			drawitem(menu, item, 0);			drawitem(menu, menu.curitem, 1);			item = menu.curitem;			change = !change;		}		key = wgetch(menu.win);		switch (key) {		case 10:			wclrscr(menu.win);			wrefresh(menu.win);			menu.curitem->click();			return;		case 259:			if ((menu.curitem->up != NULL) && menu.curitem->up != menu.curitem) {				change = 1;				menu.curitem = menu.curitem->up;				menu.pos = (menu.pos + menu.count - 1) % menu.count;			}			break;		case 258:			if ((menu.curitem->down != NULL) && menu.curitem->down != menu.curitem) {				change = 1;				menu.curitem = menu.curitem->down;				menu.pos = (menu.pos + menu.count + 1) % menu.count;			}			break;		case 260:			if ((menu.curitem->left != NULL) && menu.curitem->left != menu.curitem) {				change = 1;				menu.curitem = menu.curitem->left;				menu.pos = (menu.pos + menu.count - menu.row) % menu.count;			}			break;		case 261:			if ((menu.curitem->right != NULL) && menu.curitem->right != menu.curitem) {				change = 1;				menu.curitem = menu.curitem->right;				menu.pos = (menu.pos + menu.count + menu.row) % menu.count;			}			break;		case 4:			wstandend(menu.win);			wattroff(menu.win, A_STANDOUT | A_COLOR);			wclrscr(menu.win);			wrefresh(menu.win);			resetty();			break;		case 9:			if (menu.curitem->olhelp != NULL) {				help(menu.curitem->olhelp->title, menu.curitem->olhelp->fname, menu.curitem->olhelp->startstr,				     				     menu.curitem->olhelp->endstr);			}		default:			if ((key > 40) && (key < 127)) {				if (islower(key))					key = toupper(key);				i = posch(menu.hotkeys, key);				if (i >= 0)					if ((menu.curitem->hotkey) != key) {						item = menu.curitem;						change = 1;						menu.curitem = &menu.items[i];					}			}		}	} while (key != 4);}/*以密码的形式输入字符串*/int	inputpass(WINDOW *win, int y, int x, int leng, char *s, int type, int helpy, int helpx, char *helpstr){	int	funstatus(int , char );	char	tmpstr[512];	int	cur_posi, j, modiflag, lflag, rflag, endloop;	int	y1, x1, yend, xend;	static int	insflag = 1;	*(s+0) = 0;	for(j=0;j<leng;j++) *(s+j)=' ';	*(s+j)=0;	cur_posi = 0;	modiflag = 0;	endloop = 0;	yend = y;	xend = x + leng - 1;	for(j=0;j<leng;j++) tmpstr[j]='*';	tmpstr[j]=0;

⌨️ 快捷键说明

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