📄 help.bak
字号:
wrefresh(w); } else if ( result=-1){ wmove( w, ny,nx ); wrefresh(w); } } /*** 当弹出菜单时的循环 ***/ } /*** 键盘循环 ***/ } /*** 主题循环 ***/ Putrect( w, y, x, scr ); Free ( scr ); return (TRUE);}/***** 初始化显示数组, (公用变量text)** 从 (HELPNAME)文件中获取当前主题***/int Initarry ( w, width, topic, filename )WINDOW *w;int width;char *topic;char *filename;{ FILE *fp; int FEOF; char c,s[128],s1[128]; int i=0,j=0,k=0,l=0,num=-1,len; char str[1025]; fp = fopen( filename , "r" ); if ( fp == NULL) { sprintf( str,"不能打开帮助文件(%s)!!!",filename); Message(stdscr,Y+HEIGHT-2,X+2,str,"出错:",1); return -1; } fseek ( fp, 0, SEEK_CUR ); sprintf( s, "BEGIN:%s", topic ); while( ! feof(fp) ) { fgets( str, 1024, fp ) ; if ( (char *)strstr( str, s ) ){ FEOF = 0; break; } } if ( FEOF ){ Message(stdscr,Y+HEIGHT-2,X+2,"没有找到这个主题!!!","出错:",1); return -1; } FEOF = 1; for( i= 0; i<500; i++) text[i][0]='\x0'; i=0; sprintf( s, "END:%s", topic ); while (!feof(fp)){ fgets( str, 1024,fp ); if ( (char *)strstr( str, s ) != NULL ){ FEOF = 0; break; } while( k<strlen(str) ){/* if ( str[k] = Key_tab ) { for ( l = 0 ;l<8;l++ ) text[j][i++] = str[k]; } else text[j][i]=str[k];*/ text[j][i]=str[k]; if ( (k+1)%width==0 && k!=0 ) { text[j][i+1]='\x0a'; text[j][i+2]='\x0'; j++; i = 0; k++; } else if ( k>1024 ) { text[j][i]='\0'; j++; i=0; k=0; break; } else { i++; k++; } } text[j][i-1]='\x0'; i=k=0;j++; } for(i=0;i<=j;i++) { len = strlen(text[i]); k=0; while(k<width){ if( text[i][k]=='\x9' )text[i][k]=' '; if( text[i][k]=='\x0'||text[i][k]=='\x0a' ){ for( l=k;l<width;l++){ text[i][k]=' '; k++; } break; } k++; } text[i][width] = '\x0'; if(strlen(text[i])!=width){ Message(stdscr,Y+HEIGHT-2,X+2,"程序运行(读取文件)出现错误!!!","出错:",1); return -1; } } NREC = j; if ( FEOF==1 ){ Message(stdscr,Y+HEIGHT-2,X+2,"没有找到这个主题的终止!!!","出错:",1); return -1; } fclose ( fp ); return TRUE;}/***** 显示当前主题 (text[]) 的内容*****/int Show_arry( w, y, x, height, width, index ,color,bkcolor ) WINDOW *w; int y;int x; int height; int width; int index; int bkcolor;{ int i=0,j=0; wsetcolor(w, color, bkcolor); for( i=0;i<height;i++){ mvwaddstr( w, y+i, x, text[i+index] ); } wrefresh( w ); return TRUE;}/***** 反白显示主题, 隐藏主题** y:光标移动到新位置的纵坐标. yold:光标移动前的纵坐标. ** nrerec, oldrec. 移动前后的第几行***/int Show_NxtTopic( w, y, x, yold, newrec, oldrec, row, color, bkcolor )WINDOW *w;int y;int x;int yold;int newrec;int oldrec;int row;int color;int bkcolor;{ int i=0,j=0,nstart=-1,nend=-1; char str[80]; char s[80]; strcpy ( str, text[newrec] ); while (1) { if ( str[i]=='\x0' ) break; if( str[i]=='<' && str[i+1]=='<' ){ nstart=i+2; } if( str[i]=='>' && str[i+1]=='>' ) { nend=i-1; if ( row <= nend ) break; } i++; } if( Nxt_Topic[0]!='\x0' ) { if ( yold!=-1){ wsetcolor(w,color, bkcolor ); mvwaddstr( w, yold, x, text[oldrec]); } Nxt_Topic[0]='\x0'; } if ( nstart>=0 && nend >=0 && row>=nstart && row<=nend ){ strncpy( Nxt_Topic, str+nstart, nend-nstart+1 ); Nxt_Topic[nend-nstart+1]='\x0'; if ( tFlags == 1 ) { wsetcolor( w, bkcolor, color ); mvwaddstr( w, y, x+nstart, Nxt_Topic ); } else { wstandout( w ); mvwaddstr( w, y, x+nstart, Nxt_Topic ); wstandend( w ); } } return TRUE;}/***** 增加一个主题链表** ***/int Add_link(char *topic,int ny,int nx,int nrec,int nline,int nrow){ int i=0; struct Help_link *link; if( topic[0]=='\x0') return FALSE; link=(struct Help_link *)malloc(sizeof(struct Help_link)); if(link==NULL)return FALSE; strcpy(link->topic,topic); link->ny=ny; link->nx=nx; link->nrec=nrec; link->nline=nline; link->nrow=nrow; if(Link_head==NULL){ Link_cur=Link_head=link; Link_cur->nxtlink=NULL; Link_cur->prvlink=NULL; } else { link->prvlink=Link_cur; link->nxtlink=NULL; Link_cur->nxtlink=link; Link_cur=link; } return TRUE;}/***** 删除当前主题链表** 用于返回上个主题 ***/int Del_link(){ struct Help_link *link; if (Link_head==NULL||Link_cur==NULL) return FALSE; if(Link_cur->prvlink==NULL){ free(Link_cur); free(Link_head); Link_head=Link_cur=NULL; } else { link=Link_cur->prvlink; Link_cur->prvlink->nxtlink = NULL; free( Link_cur); Link_cur=link; } return TRUE;}/***** 释放所有链表内存 *****/int Free_link(){ int i=0,n=1; struct Help_link *link; struct Help_link *prvlink; if ( Link_cur==NULL )return FALSE; link=Link_cur; prvlink=link->prvlink; while( prvlink!=NULL){ free(link); link = prvlink; prvlink = link->prvlink; } if( prvlink==NULL) free(link); return 1;}/***** 打印当前主题 *****/int Print_Cur_Topic(){ int i=0; FILE *fp; fp=fopen( "/dev/lp0","w" ); if ( fp == NULL) { Message(stdscr,Y+HEIGHT-2,X+2,"不能打开打印机!!!","出错:",1); fclose(fp); return FALSE; } for( i=0;i<=NREC;i++){ fprintf( fp, "%s\n",text[i] ); } Message(stdscr,Y+HEIGHT-2,X+2,"打印完毕.","提示:",1); fclose(fp); return TRUE;}int Message( w, y, x, mesg, title, flags )WINDOW *w;int y;int x;char *mesg;char *title;int flags;{ MessageBox( title, mesg );}int Message1( w, y, x, mesg, title, flags )WINDOW *w;int y;int x;char *mesg;char *title;int flags;{ char ch; int i; int Return = TRUE; int TotalLen=58; int len1,len2; if( ( (len1=strlen(title)) + (len2=strlen(mesg)) ) > TotalLen ) return FALSE; if ( tFlags != 1 ){ wstandout ( w ); for( i= x; i<x+TotalLen-2; i++ ) mvwaddstr( w, y, i, " " ); mvwaddstr( w, y, x, title ); mvwaddstr( w, y, x+len1, mesg ); if ( flags==0 ){ mvwaddstr( w, y, x+len1+len2,"(Y/N):"); wrefresh(w); ch = getch(); if ( ch=='Y' ||ch =='y' ) Return=TRUE; else Return=FALSE; } else { mvwaddstr( w, y, x+len1+len2," (按任意键继续...)"); wrefresh(w); getch(); Return=TRUE; } if( !(flags==0 && Return == TRUE) )mvwaddstr( w, y, x, HELPMSG ); wstandend ( w ); } else { wsetcolor ( w, GRAY, GRAY ); for( i= x; i<x+TotalLen-2; i++ ) mvwaddstr( w, y, i, " " ); wsetcolor ( w, BLUE, GRAY ); mvwaddstr( w, y, x, title ); wsetcolor ( w, CYAN, GRAY ); mvwaddstr( w, y, x+len1, mesg ); wrefresh(w); if ( flags==0 ){ mvwaddstr( w, y, x+len1+len2," (Y/N):"); wrefresh(w); ch = getch(); if ( ch=='Y' ||ch =='y' ) Return=TRUE; else Return=FALSE; } else { mvwaddstr( w, y, x+len1+len2," (按任意键继续...)"); wrefresh(w); getch(); Return=TRUE; } if( !(flags==0 && Return == TRUE) )mvwaddstr( w, y, x, HELPMSG ); } wrefresh(w); return Return;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -