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

📄 826.c

📁 curses界面编程
💻 C
📖 第 1 页 / 共 2 页
字号:
                if(count >= INPUT_SIZE-1 )                {                beep();                }                else                {                mvwaddch(inpbox[2],0,x,ch);   /* 如果不是特殊字符, 印出*/                count++;                tmpstr[count] = ch;                x++;                }                break;        }        wmove(inpbox[2],0,x);                     /* 移动光标至现在位置 */        wrefresh(inpbox[2]); } while (flag==1);  tmpstr[count+1]='\0'; memcpy(str,tmpstr,strlen(tmpstr));//mvprintw(12,20,"inputs string:tmp:[%s],str:[%s]",tmpstr,str);}/*输入框函数inputbox()*//*char * topic :标题  char * inputStr:返回的输入信息*/WINDOW **inpbox(char * topic, char * inputStr){int width,height;int i,j;int y, x;/*position of message box*/WINDOW **inputbox;width = INPUT_SIZE;height=2;x = (80-width)/2;y = (20-height)/2;/** ______________________________________*|TOPIC (1)|(0)*|    INPUTBOX:||||||||||||||||| (2)    |*|                                      |*|         [OK](3) [CANCEL] (4)         |*|______________________________________|*/inputbox=(WINDOW **)malloc((5)*sizeof(WINDOW *));                                /*box+topic+inputbox+OK_CANCEL*/inputbox[0]=newwin(height+4,width+2,y,x);/**lines,rows,y,x**/wbkgd(inputbox[0],COLOR_PAIR(BLU_WHI));/**front:BLUE,bak:WHITE**/box(inputbox[0],ACS_VLINE,ACS_HLINE);/**draw box**/inputbox[1]=subwin(inputbox[0],1,width,y+1,x+1);inputbox[2]=subwin(inputbox[0],1,width,y+2,x+1);wbkgd(inputbox[2],COLOR_PAIR(WHI_BLU));wprintw(inputbox[1],"%s",topic);inputbox[3]=subwin(inputbox[0],1,6,y+4,x+3);wprintw(inputbox[3]," [OK] ");/*length=1,so +1 :)*/inputbox[4]=subwin(inputbox[0],1,10,y+4,x+width-10);wprintw(inputbox[4]," [CANCEL] ");wrefresh(inputbox[0]);inputs(inputbox,1,1,inputStr);return inputbox;}/*msgrtn()*//*消息框返回值:OK or CANCEL*/int inpboxrtn(WINDOW **inputbox){int key;int selected=3;while (1) {  key=getch();  if (key==KEY_LEFT || key==KEY_RIGHT) {    /******[OK]***********[CANCEL]**/    wbkgd(inputbox[selected],COLOR_PAIR(BLU_WHI));    wnoutrefresh(inputbox[selected]);   if (key==KEY_LEFT)        {        selected=OK;        }   else        {        selected=CANCEL;        }   wbkgd(inputbox[selected],COLOR_PAIR(WHI_BLU));   wnoutrefresh(inputbox[selected]);   doupdate();  }/**KEY_LEFT/RIGHT**/else if (key==ESC) {    return CANCEL; }else if (key==ENTER) {    return selected; }else if (key=='\t')/*TAB KEY*/ {        {wbkgd(inputbox[selected],COLOR_PAIR(BLU_WHI));        wnoutrefresh(inputbox[selected]);        selected = (selected == CANCEL) ? OK : CANCEL;        wbkgd(inputbox[selected],COLOR_PAIR(WHI_BLU));        wnoutrefresh(inputbox[selected]);        doupdate();        } }}/**while(1)**/}//////////////////////MENU Function////////////////////////MENU_OK_ONLYvoid MNokonly(){int tmpkey;	WINDOW **msgbox;msgbox = messagebox("OKONLY","OK_ONLY MENU",OK);tmpkey=getch();del_box(msgbox);		}//MENU_OK_CANCELvoid MNokcancel(){int selected_msg;	WINDOW **msgbox;WINDOW *messagebar;messagebar=subwin(stdscr,1,79,23,1);werase(messagebar);wrefresh(messagebar);msgbox = messagebox("OK_CANCEL","OK_CANCEL MENU",OK_CANCEL);selected_msg = msgrtn(msgbox);del_box(msgbox);if(selected_msg == OK)wprintw(messagebar,"CHOOSE [OK]!");else if(selected_msg == CANCEL)wprintw(messagebar,"CHOOSE [CANCEL]!");	delwin(messagebar);}//MENU_INPUT//topic:input_box's topicvoid MNinput(char *topic){int selected_msg;char *inputStr;WINDOW **inputbox;WINDOW *messagebar;messagebar=subwin(stdscr,1,79,23,1);werase(messagebar);wrefresh(messagebar);inputStr = malloc(INPUT_SIZE*sizeof(char));memset(inputStr,'\0',INPUT_SIZE);if(strlen(topic)==0) topic = "Datech AnWin";inputbox = inpbox(topic,inputStr);                //inputs(inputbox,inputStr);selected_msg = inpboxrtn(inputbox);//beep();//mvprintw(16,20,"selected_msg:[%d],string:[%s]",selected_msg,inputStr);del_box(inputbox);curs_set(0);/***设置光标不可见**///noecho();/**关回显**/if(selected_msg == OK)wprintw(messagebar,"Input string is::[%s]",inputStr);else if(selected_msg == CANCEL)wprintw(messagebar,"User CANCELED!");free(inputStr);	delwin(messagebar);}//MENU_SAVE_ASvoid MNsaveas(){MNinput("Input File Name::");}//MENU_QUIT 1004int MNquit(){int selected_msg;	WINDOW **msgbox;WINDOW *messagebar;messagebar=subwin(stdscr,1,79,23,1);werase(messagebar);wrefresh(messagebar);msgbox = messagebox("QUIT"," Are You Sure To Quit?",OK_CANCEL);selected_msg = msgrtn(msgbox);del_box(msgbox);if(selected_msg == OK){return 27;//return 27(ESC),if k==27 program quit}else if(selected_msg == CANCEL){wprintw(messagebar,"User CANCELED!");delwin(messagebar);return MNCANCEL;}}//MENU_ABOUT 2000void MNabout(){int tmpkey;WINDOW **msgbox;msgbox = messagebox("ABOUT","DaTech(C)AnWin 2004-08-23",OK);tmpkey=getch();del_box(msgbox);	}//MENU_HELP 2001void MNhelp(){int tmpkey;WINDOW **msgbox;msgbox = messagebox("HELP","Use F1~FX and UP/DOWN/LEFT/RIGHT key choose menu",OK);tmpkey=getch();del_box(msgbox);	}//MENU_VERSION 2002void MNversion(){int tmpkey;WINDOW **msgbox;msgbox = messagebox("VERSION","DaTech(C)AnWin Version 1.0",OK);		/*only OK button*/tmpkey=getch();del_box(msgbox);	}int main(){  int key,tmpkey;  int menuNo,itemNo;  WINDOW *menubar,*messagebar;  init_curses();  bkgd(COLOR_PAIR(WHI_BLU));  menubar=subwin(stdscr,1,80,0,0);  messagebar=subwin(stdscr,1,79,23,1);  draw_menubar(menubar);/************************************************/  move(2,1);  printw("Press F1 or F2 to open the menus. ");  printw("ESC quits.");  refresh();do{int selected_item,selected_msg;WINDOW **menu_items;key=getch();werase(messagebar);wrefresh(messagebar);if (key==KEY_F(1))        {        menu_items=draw_menu(1,menu1,5,MENU_WIDTH);/*WINDOW **draw_menu(int start_col,char **menu,int count,int width)*//**接口:start_col开始的列,**menu内容,count:菜单数目,width菜单宽度**/        selected_item=scroll_menu(menu_items,5,1);        delete_menu(menu_items,6);        }else if (key==KEY_F(2))        {        menu_items=draw_menu(20,menu2,3,MENU_WIDTH);        selected_item=scroll_menu(menu_items,3,20);        delete_menu(menu_items,4);        }if (selected_item<0)        wprintw(messagebar,"You haven't selected any child item");else        {//doupdate();        touchwin(stdscr);        refresh();        switch(selected_item)        {/*********************************#define MENU_OK_ONLY 1000*#define MENU_OK_CANCEL 1001*#define MENU_INPUT 1002*#define MENU_SAVE_AS 1003*#define MENU_QUIT 1004*#define MENU_ABOUT 2000*#define MENU_HELP 2001*#define MENU_VERSION 2002****************************/        case 1000://MENU_OK_ONLY        	MNokonly();        	selected_item = 0;        	break;        case 1001://MENU_OK_CANCEL        	MNokcancel();        	selected_item = 0;        	break;        case 1002://MENU_INPUT        	MNinput("Topic_Input");        	selected_item = 0;        	break;        case 1003://MENU_SAVE_AS        	MNsaveas();        	selected_item = 0;        	break;                        case MENU_QUIT:		key = MNquit();                selected_item = 0;                 break;        case MENU_ABOUT://2000		MNabout();                selected_item = 0;                break;        case MENU_HELP://2001                MNhelp();                selected_item = 0;                break;        case MENU_VERSION://2002                MNversion();                selected_item = 0;                break;        default://beep();beep();/*              wprintw(messagebar,*       "An Error Detected!!Selected will not %d",selected_item);*/        }/*switch()*/        }        touchwin(stdscr);        refresh();} while (key!=ESC);delwin(messagebar);delwin(menubar);endwin();return 0;}

⌨️ 快捷键说明

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