📄 实例11-11.c
字号:
#include<curses.h>
#include<form.h>
#include<stdlib.h>
#include< type.h>
intmain(
intargc,char*argvp [ ])
{
intch,i= 0;
introws,cols;
WINDOW*win,*subwin;
FORM*form;Field*Fields[5];
/*初始化*/
initscr();
cbreak();
/*nonl();*/
noecho();
KEYpad(stdscr,TRUE);
/*建立单元*/
Fields[ 0 ]=new_Field(1,12,1,1,0,0);
set_Field_buffer(Fields[ 0 ],0,”UserName :”);
set_Field_opts(Fields[ 0 ],Field_opts(Fields[0])&~ O_ACTiVE);
Fields[1]=new_Field(1,20,1,14,0,0);
set_Field_Back(Fields[1],A_UND ERLiNE);
set_Field_userptr(Fields[1],NULL);
Fields[2]=new_Field(1,12,2,1,0,0);
set_Field_buffer(Fields[2],0,”Password :”);
set_Field_opts(Fields[2],Field_opts(Fields[2])&~ O_ACTiVE);
Fields[ 3 ]=new_Field(1,20,2,14,0,0);
set_Field_Back(Fields[ 3 ],A_UNDERLiNE);
set_Field_opts(Fields[ 3 ],Field_opts(Fields[ 3 ])&~ O_PUBLiC);
set_Field_userptr(Fields[ 3 ],NULL);
Fields[4]=NULL;
/*建立表单*/
form=new_form(Fields);
scale_form(form,&rows,&cols);
win=newwin(rows+ 3,cols+4,3,20);
subwin=derwin(win,rows,cols,1,2);
set_form_sub(form,subwin);
box(win,0,0);
KEYpad(win,TRUE);
post_form(form);
refresh();
wrefresh(win);
wrefresh(subwin);
/*设置覆盖模式*/
form_driver(form,REQ_OVL_MODE);
for(;;) {
ch= wgetch(win);
if(ch==' \ n '&&Current_Field(form)== Fields[ 3 ]) {
form_driver(form,REQ_END_Field);
break;}
else if(ch==KEY_UP | | ch==KEY_PPAGE)
form_driver(form,REQ_PREV_Field);
else if(ch==' \ n ' | | ch==KEY_DOWN | | ch==KEY_NPAGE)
form_driver(form,REQ_NEXT_Field);
else if(is print(ch))
form_driver(form,ch);
else
form_driver(form,E_UNKNOWN_COMMAND);}
/*输出结果*/
mvprintw(18,1,”UserName : %s”,Field_buffer(Fields[1],0));
mvprintw(19,1,”Password : %s”,Field_buffer(Fields[ 3 ],0));
mvaddstr(21,1,”Pressany key to quit...”);
refresh();
wrefresh(win);
wrefresh(subwin);getch();
/*撤销表单*/
unpost_form(form);
/*释放内存*/
free_form(form);
for(i= 0;i< 5;i++) free_Field(Fields[i]);
/*复位*/
KEYpad(stdscr,F A LsE);
nocbreak();
endwin();
return0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -