📄 826.c
字号:
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 + -