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

📄 formexam.c

📁 sco unix 前台界面开发程序,采用UNIX中的词法分析器和语法分析器
💻 C
字号:
#include <curses.h>#include <form.h>#include "screen.h"#define QUIT (MAX_COMMAND+1)static int get_request(w)WINDOW *w;{	static int mode=REQ_INS_MODE;	int c = wgetch(w);	switch(c) {		case 0x1b: return QUIT;		case KEY_LEFT: return REQ_LEFT_FIELD;		case KEY_RIGHT: return REQ_RIGHT_FIELD;		case KEY_DOWN: return REQ_NEXT_FIELD;		case KEY_UP: return REQ_PREV_FIELD;		case 'N':return REQ_NEXT_PAGE;		case 'P':return REQ_PREV_PAGE;	}	return(c);}	static int my_driver(form,c)FORM *form;int c;{	switch(c) {		case QUIT:			if(form_driver(form,REQ_VALIDATION)==E_OK)				return(TRUE);			break;	}	beep();	return(FALSE);}void main(argc,argv)int argc;char *argv[];{	WINDOW *w;	FORM *form;	FIELD **f;	FIELD **make_fields();	void erase_form();	void dump_form();	void free_fields();	void display_form();	int c,done=FALSE;		FIELD *myf;	char *data;	if(!(form=new_form(make_fields())))		fprintf(stderr,"error ");	StartScreen();	display_form(form);	w=form_win(form);	while(!done) {		switch(form_driver(form,c=get_request(w))) {			case E_OK:				break;			case E_UNKNOWN_COMMAND:				done=my_driver(form,c);				break;			default:				beep();				break;			}	}	//dump_form(form);	//addstr("Hit a key\n");	//refresh();	//getch();	erase_form(form);	//free_form(form);	//free_fields(f);	EndScreen();	exit(0);}typedef FIELD * (*PF_field) ();typedef struct{	PF_field type;	int rows;	int cols;	int frow;	int fcol;	char *v;}FIELD_RECORD;static FIELD *LABLE(x)FIELD_RECORD *x;{	FIELD *f=new_field(1,strlen(x->v),x->frow,x->fcol,0,0);	if(f) {		set_field_buffer(f,0,x->v);		field_opts_off(f,O_ACTIVE);	}	return f;}static FIELD* STRING(x)FIELD_RECORD *x;{	FIELD *f=new_field(x->rows,x->cols,x->frow,x->fcol,0,0);	if(f) {		set_field_back(f,A_STANDOUT|A_UNDERLINE);	}	return f;}	static FIELD_RECORD F[]={	LABLE,0,0,0,11,"Sweepstakes Entry Form1",	LABLE,0,0,2,0,"Last Name1",	STRING,1,18,1,0,(char *) 0,	LABLE,0,0,2,20,"First2",	STRING,1,12,1,20,(char *) 0,	LABLE,0,0,2,34,"Middle1",	STRING,1,13,1,34,(char *) 0,	LABLE,0,0,5,11,"Comments1",	STRING,4,46,6,0,(char *) 0,	LABLE,0,0,0,11,"Sweepstakes Entry Form2",	LABLE,0,0,2,0,"Last Name2",	STRING,1,18,1,0,(char *) 0,	LABLE,0,0,2,20,"First2",	STRING,1,12,1,20,(char *) 0,	LABLE,0,0,2,34,"Middle2",	STRING,1,13,1,34,(char *) 0,	LABLE,0,0,5,11,"Comments2",	STRING,4,46,6,0,(char *) 0,	LABLE,0,0,0,11,"Sweepstakes Entry Form",	LABLE,0,0,2,0,"Last Name",	STRING,1,18,1,0,(char *) 0,	LABLE,0,0,2,20,"First",	STRING,1,12,1,20,(char *) 0,	LABLE,0,0,2,34,"Middle",	STRING,1,13,1,34,(char *) 0,	LABLE,0,0,5,11,"Comments",	STRING,4,46,6,0,(char *) 0,	(PF_field) 0,0,0,0,0,(char *) 0};#define MAX_FIELD 52static FIELD *fields[MAX_FIELD+1];static FIELD **make_fields(){	FIELD **f=fields;	int i;	for(i=0;i<MAX_FIELD&&F[i].type;++i,++f) {			*f=(*F[i].type)(&F[i]);		}	set_new_page(fields[9], TRUE);	set_new_page(fields[18], TRUE);	*f=(FIELD *) 0;	return(fields);}static void free_fields(f)FIELD **f;{	while(*f)		free_field(*f++);}static char *PGM=(char *) 0;static void display_form(f)FORM *f;{	WINDOW *w,*w1;	int rows;	int cols;	scale_form(f,&rows,&cols);	if(w=newwin(rows+4,cols+4,2,2)) {		set_form_win(f,w);		set_form_sub(f,derwin(w,rows,cols,2,2));		box(w, 0, 0);		keypad(w,1);	}	else		fprintf(stderr,"ERROR RETURN FROM POST_FORM");	if(post_form(f) != E_OK)		fprintf(stderr,"ERROR return from ");	else		wrefresh(w);}static void erase_form(f)FORM *f;{	WINDOW *w=form_win(f);	WINDOW *s=form_sub(f);	unpost_form(f);	werase(w);	wrefresh(w);	delwin(s);	delwin(w);}static void dump_form(form)FORM *form;{	FIELD **f;	int count,i;	char *data;	if((count=field_count(form))==-1)	{		printw("Ther form was null\n");		refresh();		return;	}	else if(count == 0)	{		printw("The form dones");		refresh();	}		if((f=form_fields(form))==NULL) {		printw("NO aaaa");		refresh();		return;	}		for(i=0;i<count;i++)	{		if((data=field_buffer(f[i],0))!=NULL)		{			printw("f[%d]:'%s'\n",i,data);			refresh();		}	}}

⌨️ 快捷键说明

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