- 论坛徽章:
- 0
|
请教:form.h输入界面的函数的用法。
用google搜索set_field_back只有一篇文章内容如下:
请无双斑竹解释一些函数的使用方法。
#include
#include
#include
#include
int main(int argc,char *argv[])
{
int ch ,i=0;
int rows,cols;
WINDOW *win,*subwin,*msgwin;
FORM *form;
FIELD *fields[7];
initscr();
cbreak();
noecho();
keypad(stdscr,TRUE);
fields[0]=new_field(1,12,1,1,0,0);
set_field_buffer(fields[0],0,"学 号:"
set_field_opts(fields[0],field_opts(fields[0])&~O_ACTIVE);
fields[1] = new_field(1,6,1,10,0,0);
// set_field_back(fields[1],A_UNDERLINE);
set_field_userptr(fields[1],NULL);
fields[2]=new_field(1,12,2,1,0,0);
set_field_buffer(fields[2],0,"姓 名:"
set_field_opts(fields[2],field_opts(fields[2])&~O_ACTIVE);
fields[3]=new_field(1,10,2,10,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]=new_field(1,12,3,1,0,0);
set_field_buffer(fields[4],0,"班 级:"
set_field_opts(fields[4],field_opts(fields[4])&~O_ACTIVE);
fields[5]=new_field(1,20,3,10,0,0);
set_field_back(fields[5],A_UNDERLINE);
set_field_userptr(fields[5],NULL);
fields[6] = NULL;
form=new_form(fields);
scale_form(form,&rows,&cols);
win=newwin(rows+10,cols+15,3,20);
subwin=derwin(win,rows,cols,1,2);
set_form_sub(form,subwin);
box(win,0,0);
keypad(win,TRUE);
msgwin=newwin(5,40,10,30);
/*box(msgwin,0,0);*/
keypad(msgwin,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]){
if(strncmp(field_buffer(fields[1],0),"8888",4)!=0){
mvwaddstr(msgwin,3,3,field_buffer(fields[1],0));
mvwaddstr(msgwin,2,3,"User does not exist"
mvwaddstr(msgwin,4,3,fields[3]);
wrefresh(msgwin);
wgetch(msgwin);
refresh();
touchwin(win);
wrefresh(win);
wrefresh(subwin);
}
form_driver(form,REQ_NEXT_FIELD);
/*break;*/
}
else if(ch==KEY_UP)
form_driver(form,REQ_PREV_FIELD);
else if(ch==KEY_DOWN | | ch=='\n')
form_driver(form,REQ_NEXT_FIELD);
else if(isprint(ch))
form_driver(form,ch);
else form_driver(form,E_UNKNOWN_COMMAND);
}
unpost_form(form);
free_form(form);
for(i=0;i<5;i++)
free_field(fields);
endwin();
} |
|