|
|
This document is available in: English Castellano ChineseGB Deutsch Francais Italiano Nederlands Portugues Russian Turkce |
by Reha K. Gerçeker <gerceker(at)itu.edu.tr> ��������: Reha����������˹̹������һ��ѧ���������ѧ��,����ϲ����������linux�ṩ��������չƽ̨. �����˺ܶ�ʱ�������ļ����ǰ��д����,��ϣ���Լ���һ���ܳ�Ϊһ��ΰ��ĵij���Ա. Ŀ¼:
|
ÕªÒª:
Ncurses��һ�����ṩ���ܼ�����(��ݼ�),��Ļ�����Լ������ı��ն˵�ͼ�λ������ܵĶ�̬��
��ϣ�����ij�����һ����ɫ�Ľ�����?Ncurses��һ�����ṩ�����ı��ն˴��ڹ��ܵĶ�̬��. Ncurses����:
Ncurses���������ÑANSI/POSIX��׼��UNIXϵͳ������,����֮��,�������Դ�ϵͳ���ݿ��м���ն˵�����, �����Զ����е���,�ṩһ�������ն�Լ���Ľӿ�.���,Ncurses�����ڲ�ͬ��ϵͳƽ̨�Ͳ�ͬ���ն��Ϲ����ķdz���.
mc���߼�����һ����ncursesд�ĺܺõ�����,�������ն���ϵͳ�������õĽ���ͬ������ncurses��д��. ����������ǵĽ�ͼ:
Ncurses�ǻ���GNU/Linux��չ��,����� http://www.gnu.org/software/ncurses/�Ի�����µĸ��°汾����������ϸ��Ϣ�Լ�������� .
Ϊ���ܹ�ʹ��ncurses��,������������Դ�����н�curses.h����(include)����,�����ڱ������Ҫ������������. ��gcc��������ʹ�ò���-lcurses���б���.
��ʹ��ncurses��ʱ��,���б�Ҫ�˽����Ļ������ݽṹ.����һ��WINDOW�ṹ,�����־ͺ�����֪��,������������ �������Ĵ����,����ncurse���еĺ���������һ��WINDOWָ�����.
��ncurses��ʹ����������Ǵ���.��ʹ��û�д����Լ��Ĵ���,��ǰ��Ļ����Ϊ�����Լ��Ĵ���. ��ͬ��׼�������ϵͳ�ṩ����Ļ���ļ�������stdoutһ��(����û�йܵ�ת��),ncurses�ṩһ�� WINDOWָ��stdscr����ͬ����.����stdscr��,ncurses��������һ��WINDOWָ��curscr. ��stdscr������ǰ��Ļһ��,curscr������ǰ�ڿ��ж������Ļ,�����Դ���"������ʲô����?"�����������Ķ�.
Ϊ�������ij�����ʹ��ncurses�ĺ����ͱ���,���������ȵ���initscr����(��ʼ������),�����һЩ�������� stdscr,curscr�ȷ����ڴ�,������ncurses�⴦��׼��ʹ��״̬,���仰˵,����ncurses�����������initscr����. ͬ����Լ��,���ڽ���ʹ��ncurses��,Ӧ��ʹ��endwin���ͷ�����ncursesʹ�õ��ڴ�.��ʹ��endwin��,����������ʹ�� �κ�ncurses�ĺ���,��������һ�ε���initscr����.
��initscr��endwin֮��,�벻Ҫʹ�ñ�׼���������ĺ�������������Ļ��,����,���ῴ����Ļ�ᱻ������� Ū�����߰���,��ɲ����������Ľ��.��ncurses���ڼ���״̬ʱ,��ʹ�����Լ��ĺ������ѽ���������Ļ.�ڵ���initscr֮ǰ���� endwin֮��,���Ϳ������ʹ����.
WINDOW�ṹ���á¾ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Í¬Ò»ï¿½ß¶È¿ï¿½ï¿½ï¿½ï¿½Ô¼ï¿½ï¿½Ú´ï¿½ï¿½ï¿½ï¿½Ðµï¿½Î»ï¿½ï¿½,���ǻᱣ���ڴ����е�����.��������д������ʱ, ��ı䴰���е�����,��������ζ������Ļ�л�������ʾ����,Ҫ������Ļ����,�������refresh����wrefres����.
���������stdscr��curscr����֮�������.curscr�����ŵ�ǰ��Ļ������,�ڵ���ncurse�����������,stdscr��curscr���ܻ��в�ͬ������, ������������һ����Ļ���ݸı����stdscr��curscr����һ��,������ʹ��refresh����.���仰˵, refresh��Ψһһ������curscr�ĺ���.ǧ��ҪŪ������curscr��stdscr,Ӧ����refresh�����и���curscr�е�����
refresh��һ���ܾ����ܿ�ĸ�����Ļ�Ļ���,������refreshʱ,��ֻ���´��������ݸı����,���ʡ��CPU�Ĵ���ʱ�� ,��ֹ��������Ļ��д��ͬ����Ϣ(����ע:����Ļ��ͬһλ�ò���������ʾͬ��������.)���ֻ��ƾ���Ϊʲôͬʱʹ��ncurses��� �ͱ�׼��������������������Ļ���ݴ�λ��Ô��.������ncurses���������ʱ,��������һ����־,����refresh ֪������һ�иı���.���������ñ�׼�����������ʱ,�Ͳ���������ֽ��.
refresh��wrefresh��ʵ����ͬ��������.wrefresh��Ҫһ��WINDOW��ָ�����,������ˢ�¸ô��������. refresh()��ͬ��wrefresh(stdscr).���ں�����ᵽ,��wrefreshһ��,ncursers�����ຯ��������������Ϊstdscr����ĺ꺯��.
����������̸̸�ܶ����´����subwin��newwin����.���Ƕ���Ҫһ���������´���ĸ߶�,�����Լ� ���Ͻ�λ�õIJ���,���ҷ���һ��WINDOWָ����ָ��ô���.������ʹ��������Ϊwrefresh�IJ�������һЩ�����ҽ�Ҫ ̸���ĺ���.
�����ܻ���:"���������ͬ��������,ΪʲôҪ����������?",���ǶԵ�,����֮����һЩϸ΢�IJ��.subwin����һ�� ������Ӵ���,�����̳��˸��������������.��������Ӵ����иı�����Щ���Ե�ֵ,��������Ӱ�츸����.
����֮��,��������Ӵ���֮�仹��һЩ��ϵ.��������Ӵ����е����ݽ��˴˹���,�˴�Ӱ��.���仰˵, �ڸ����ں��Ӵ����ص���������ַ��ᱻ����һ������ı�.���������д�������ݵ��������,�Ӵ������������ͬ�� �ı���,��֮Ҳ�����.
��subwin��ͬ����,newwin����һ�����еĴ���.�����Ĵ���,��û�����ǵ��Ӵ���֮ǰ,�Dz�����������干�� �κ��ı����ݵ�.ʹ��subwin�ĺô��ǿ���ʹ�ý��ٵ��ڴ�Ϳ��Է���Ĺ����ַ�������.������������Ĵ������ݻụ��Ӱ�� ��ô��Ӧ��ʹ��newwin.
�����Դ�����������Ӵ���,ÿһ���Ӵ����ֿ��������Լ����Ӵ���,����һ��Ҫ��ס,������ַ������DZ��������� �Ĵ��干����.
����������������Ĵ����,������ʹ��delwin������ɾ���ô���.�ҽ�����ʹ��man pages���õ���Щ��������ϸ����.
����̸����stdscr,curscr,�Լ�ˢ����Ļ�Ͷ���һ���´���,��������������һ������д������?����������һ�������ж�������?
ʵ������Ŀ�ĺ�����ͬ��׼����������е�һЩ����һ��,����ʹ��printw���滻printf�������,scanw�滻scanf��������, addch�滻putc����putchar,getch�滻getc����getchar.�����÷�һ��,�������ֲ�ͬ,���Ƶ�,addstr������������ д��һ���ַ���,getstr�����Ӵ����ж���һ���ַ���.������Щ����������һ��"w"��ĸ��ͷ,�����ٸ��Ϻ���������, �����Ҫ��������һ����������,��һ�����������Ǹô����WINDOWS�ṹָ��,�ٸ�����,printw(...)��wprintw(stdscr,...) ����ͬ��,����ͬrefresh()��wrefresh(stdscr)һ��.
���Ҫд��Щ��������ϸ˵��,��ƪ���½����ĺܳ�.Ҫ�õ����ǵ�����,Ô���Լ�����ֵ����������Ϣ,man pages��һ��������ѡ��. �ҽ���������man pages�����ʹ�õ���һ������.�����ṩ����ϸ�ͷdz����õ���Ϣ.����ƪ���µ����һ��,���ṩ�� һ��ʾ������,���Ե�����һ��ncurses������ʹ��ָ��.
�ڽ���д�����ݺʹӴ���������ݺ�,������Ҫ����һ������ָ����߼�ָ�� ����ָ����һ������ָ��,��ֻ��һ��,����һ�����潲,�߼�ָ������ncurses����, ÿһ�����嶼ֻ��һ������ָ��,�������ǿ����ж���߼�ָ��.
������׼��д��Ͷ�����ʱ��,�߼�ָ���ָ�����н�Ҫ���в���������.���, ͨ���ƶ��߼�ָ��,�������κ�ʱ�������е�����λ��д������.������������׼��������������֮��.
�ƶ��߼�ָ��ĺ�����move��������һ�����dz����ײ³����ĺ���wmove.move��wmove��һ���꺯��,ר���������� stdscr��.
����һ����Ҫȷ�ϵ�������ָ����߼�ָ���Ð����ϵ,����ָ���λ�ý�����һ��д��������Ч,��������ͨ������ ͨ��WINDOW�ṹ��_leave��־��λ��.���������_leave��־,�����������,�߼�ָ�뽫���ƶ�������ָ��ָ���������д�������. ���û������_leaveλ,�����������,����ָ�뽫���ص��߼�ָ��ָ����ĵ�һ���ַ�д��λ��._leave��־����leaveok�������Ƶ�.
�ƶ�����ָ��ĺ�����mvcur,���������ĺ���,mvcur�ڲ��õȴ�refresh�����ͻ�������Ч.���������������ָ��, ������ʹ��curs_set����,ʹ��man pages�������ϸ��Ϣ.
ͬ������һЩ�꺯�������������ƶ���д��Ⱥ���.��������addch,addstr,printw,getch,getstr,scanw�Ⱥ��� ��man pagesҳ�õ�����Ľ���.
����������д�����ݺ�,������ô���������,�к��ַ�?
��ncurses��,�����ζ���ÿհ��ַ������������,���л����������������. �����ҽ��ܵĺ�������ʹ�ÿհ��ַ�����Ҫ������,�ﵽ����������Ŀ��.
��������̸��������ַ����еĺ���,delch��wdelch��ɾ���������߼�ָ��ָ����ַ�,��һ���ַ���һֱ����ĩ���ַ��������� һ��λ��.deleteln��wdeleteln��ɾ�����߼�ָ��ָ�����,����������һ��.
clrteol��wclrtoeol����������߼�ָ��ָ��λ���ұ��ַ���ʼ����ĩ�������ַ�.clrtbot��wclrtobot ������������߼�ָ������λ���ұ��ַ���ʼ����ĩ�������ַ�,����ɾ������������.
������Щ,����һЩ���������������Ļ�ʹ���.�����ַ������������������Ļ.��һ�������ÿհ��ַ���� ��Ļ��������,Ȼ���ٵ���refresh����.����һ�ַ������ù̶����ն˿����ַ����.��һ�ַ����Ƚ���,��Ϊ����Ҫ��д ��ǰ��Ļ.�ڶ�����Ѹ�����������Ļ����.
erase��werase�ÿհ��ַ��滻������ı��ַ�,����һ�ε���refresh����Ļ���ݽ��ᱻ�����.����������� ��Ҫ���������Ļ, �⽫һ���Ƚϱ��İ취.������ʹ�����潲�ĵ�һ�ַ��������.��������Ҫ���������һ����Ļ��ô��, ������ʹ�����潲�ĺ������dz��õ������������.
���漰����������֮ǰ,������������һ��_clear��־λ.��������˸ñ�־,��ô�������WINDOW�ṹ��. ��������ʱ,������refresh�����Ϳ��ƴ��뵽�ն�,refresh��鴰��Ŀ����Ƿ�����Ļ�Ŀ���(ʹ��_FULLWIN��־λ). ����ǵĻ�,���������õ��ն˷���ˢ����Ļ,����д����˿հ��ַ�����ı��ַ�����Ļ,����һ�ַdz����������ķ���. Ϊʲô����������Ŀ��Ⱥ���Ļ�������ʱ�������õ��ն˷���������?������Ϊ�����ն˴��벻����ֻ����������� ,�������������ǰ��Ļ._clear��־λ��clearok��������.
����clear��wclear�������������Ļ����һ���Ĵ�������.ʵ����,��Щ������ͬ��ʹ��werase��clearok. ����,���ÿհ��ַ���䴰����ı��ַ�.����,����_clear��־λ,���������Ⱥ���Ļ����һ��,��ʹ�����õ��ն˷��� ����,�����һ�����ÿհ��ַ���䴰��������������refreshˢ��.
�ܶ���֮,�����֪������Ŀ��Ⱥ���Ļ����һ��,��ʹ��clear����wclear,����ٶȽ��dz���.���������� ���Ǻ���Ļ����һ��,��ôʹ��wclear��werase��û���κηֱ�.
������Ļ�Ͽ�������ɫ��ʵ������ɫ��,��Ϊÿһ��������һ������ɫ��һ��ǰ��ɫ.ʹ��ncurses��ʾ��ɫ ��ζ���������Լ�����ɫ�Բ��ҽ���Щ��ɫ��д�뵽����.
��ͬʹ��ncurses���������ȵ���initscrһ��,start_color��Ҫ���ȵ����Գ�ʼ��ɫ��. �����������Լ�����ɫ�Եĺ�����init_pair,����ʹ����������һ����ɫ�Ժ�,����������ں����е����õĵ�һ��������ϵ����. �ڳ�����,������ʲôʱ����Ҫ�ø���ɫ��,��ֻ����COLOR_PAIR���øò����Ϳ�����.
���˶�����ɫ��,��������ʹ�ú�������֤д���ʹ�����ò�ͬ����ɫ��,attron��wattron������������Ҫ��. ʹ����Щ������������ѡ�����ɫ��д�����ݵ���Ӧ����Ļ��,ֱ��������attroff����wattroff����.
bkgd��wbkgd�������Ըı���Ӧ�������������ɫ��,����ʱ,������ı䴰�����������ǰ��ɫ�ͱ���ɫ.Ҳ�� ��˵,����һ��ˢ�¶���ǰ,���������е����򽫻�ʹ���µ���ɫ����д.
ʹ�øղ��ᵽ����Щ����man pages���õ���ϸ�Ĺ�����ɫ���Ϻ���Ϣ.
�����Ը����ij�������Ĵ���һ���ܺÿ��ı߿�,�ڿ�����һ��box�꺯����������������һ��,������������ ��ͬ����,û��wbox����.box��Ҫһ��WINDOWָ������Ϊ����.
��������box��man pagesҳ���ɻ����ϸ�İ���,������һЩ��Ҫע�����,��һ���������ñ߿���ʵֻ�� �ڴ������Ӧ�߿�����д����һЩ�ַ�.������ڱ߿�����һ��д����ijЩ����,�߿ò½«»á±»ï¿½Ð¶ï¿½. ����İ취����������Ôʼ���������ٽ�һ���Ӵ���,��Ôʼ������뵽�߿�����Ȼ��ʹ��������Ӵ�����Ϊ��Ҫ���������ݴ���.
Ϊ���ܹ�ʹ�ù��ܼ�,������������Ҫ��������Ĵ���������_use_keypad��־λ,keypad��һ�������� _use_keypadֵ�ĺ���,����������_use_keypad��,���Ϳ���ʹ�ü��̵Ĺ��ܼ�(��ݼ�),��ͬ��ͨ����һ��.
������,�������ʹ��getch�������򵥽����������������,����Ҫע�����Ҫ�����ݸ������α���(int)������ �ַ���(char).������Ϊ���α��������ɵĹ��ܼ����ַ��͸���.������Ҫ֪����Щ���ܼ���ֵ,��ֻ��Ҫʹ�ÿ��ж���� �����Ϳ�����,��getch��man page������Щ��ֵ���б�.
���ǽ�������һ���dz���ʵ�õij���.�����������,��ʹ��ncurses����˵�,�˵��е���һ��ѡ����ᱻ֤��ѡ��. �������Ƚ�����˼��һ�����ʹ����ncurses�Ĵ������ﵽ�˵�Ч��.�����Կ��������Ļ��ͼ.
����ʼ����ͨһ��,������ȥ��һ��ͷ�ļ�.�������Ƕ����˻س�����escape����ASCII��ֵ.
#include <curses.h> #include <stdlib.h> #define ENTER 10 #define ESCAPE 27
�������ʱ��,����ĺ����ᱻ����.�����ȵ���initscr��ʼ��ָ����ŵ���start_color����ʾ��ɫ. ������������ʹ�õ���ɫ�Ի��ں��涨��.����curs_set(0)�����ε�����ָ��.noecho()����ֹ�����ϵ����������Ļ����ʾ����. ������ʹ��noecho�������Ƽ�������������ַ�,ֻ������Ҫ���ַ���ʾ.echo()�������ε�����Ч��. ���ŵĺ���keypad�����˿�����stdscr�н��ܼ��̵Ĺ��ܼ�(��ݼ�),������Ҫ�ں���ij����ж���F1,F2�Լ��ƶ��Ĺ���.
void init_curses() { initscr(); start_color(); init_pair(1,COLOR_WHITE,COLOR_BLUE); init_pair(2,COLOR_BLUE,COLOR_WHITE); init_pair(3,COLOR_RED,COLOR_WHITE); curs_set(0); noecho(); keypad(stdscr,TRUE); }
���涨����������������һ����ʾ����Ļ����IJ˵���, �����Կ������main�γ���,������ȥ����ֻ����Ļ�����һ��,��ʵʵ������stdscr�����һ���Ӵ���,���Ӵ���ֻ�� һ��.����ij���ָ����Ӵ����ָ����Ϊ���IJ���,���ȸı����ı���ɫ,���Ŷ���˵�������,����ʹ��waddstr����˵� ������.��Ҫע�����wattron����������һ����ͬ����ɫ��(���3)��ȡ��ȱʡ����ɫ��(���2).��ס2����ɫ�����ʼ�� ��wbkgd���ó�ȱʡ����ɫ����.wattroff���������������л���ȱʡ����ɫ��״̬.
void draw_menubar(WINDOW *menubar) { wbkgd(menubar,COLOR_PAIR(2)); waddstr(menubar,"Menu1"); wattron(menubar,COLOR_PAIR(3)); waddstr(menubar,"(F1)"); wattroff(menubar,COLOR_PAIR(3)); wmove(menubar,0,20); waddstr(menubar,"Menu2"); wattron(menubar,COLOR_PAIR(3)); waddstr(menubar,"(F2)"); wattroff(menubar,COLOR_PAIR(3)); }
��һ��������ʾ�˵�����F1����F2����ʾ�IJ˵�,������һ������ɫ������ �˵�����ɫһ���İ�ɫ��������,���Dz�ϣ������´��ڻᱻ��ʾ�ڱ���ɫ�ϵ��ָ��ǵ�.����Ӧ��ͣ��������ֱ�� �ر��˲˵�.�����Ϊʲô�˵����岻�ܶ���Ϊstdscr���Ӵ���,������ᵽ,����items[0]����newwin���������, ����8���������Ƕ����items[0]������Ӵ���.�����items[0]����������һ��Χ���ڲ˵��Աߵı߿�,������ ������������ʾ�˵���ѡ�еĵ�Ԫ.ͬ����,���Dz��Ḳ�ǵ��˵��ϵı߿�.Ϊ������ѡ�к�ûѡ�е�״̬,�б�Ҫ�� ѡ�еĵ�Ԫ����ɫ�������IJ�һ��.�������������е����������������,�˵��еĵ�һ����Ԫ����ɫ�������IJ�һ��, ������Ϊ�˵���������,��һ����Ԫ��ѡ��״̬.
WINDOW **draw_menu(int start_col) { int i; WINDOW **items; items=(WINDOW **)malloc(9*sizeof(WINDOW *)); items[0]=newwin(10,19,1,start_col); wbkgd(items[0],COLOR_PAIR(2)); box(items[0],ACS_VLINE,ACS_HLINE); items[1]=subwin(items[0],1,17,2,start_col+1); items[2]=subwin(items[0],1,17,3,start_col+1); items[3]=subwin(items[0],1,17,4,start_col+1); items[4]=subwin(items[0],1,17,5,start_col+1); items[5]=subwin(items[0],1,17,6,start_col+1); items[6]=subwin(items[0],1,17,7,start_col+1); items[7]=subwin(items[0],1,17,8,start_col+1); items[8]=subwin(items[0],1,17,9,start_col+1); for (i=1;i<9;i++) wprintw(items[i],"Item%d",i); wbkgd(items[1],COLOR_PAIR(1)); wrefresh(items[0]); return items; }
������������򵥵�ɾ�������溯������IJ˵�����.��������delwin����ɾ������, �����ͷ�itemsָ����ڴ浥Ԫ.
void delete_menu(WINDOW **items,int count) { int i; for (i=0;i<count;i++) delwin(items[i]); free(items); }
scroll_menu�������������ڲ˵�ѡ�����������ƶ�,��ͨ��getch��ȡ�����ϵļ�ֵ,��������˼����ϵ����ƻ������Ʒ����, �˵�ѡ�������һ���������һ���ѡ��.����һ�¸ղ�������,ѡ����ı���ɫ�����ûѡ�еIJ�һ��.���������������� �ķ����,��ǰ�˵�����ر�,��һ���˵���.��������˻س���,�򷵻�ѡ�еĵ�Ԫֵ.���������ESC��,�˵����ᱻ�ر�,����û���κ�ѡ���� ,����ĺ��������������������.getch�ܴӼ����϶�ȡ��ֵ,������Ϊ�����ڳ���ʼʹ����keypad(stdscr,TRUE) ���ҽ�����ֵ����һ��int�ͱ���������char�ͱ���,������Ϊint�ͱ����ܱ�ʾ��char�͸����ֵ.
int scroll_menu(WINDOW **items,int count,int menu_start_col) { int key; int selected=0; while (1) { key=getch(); if (key==KEY_DOWN || key==KEY_UP) { wbkgd(items[selected+1],COLOR_PAIR(2)); wnoutrefresh(items[selected+1]); if (key==KEY_DOWN) { selected=(selected+1) % count; } else { selected=(selected+count-1) % count; } wbkgd(items[selected+1],COLOR_PAIR(1)); wnoutrefresh(items[selected+1]); doupdate(); } else if (key==KEY_LEFT || key==KEY_RIGHT) { delete_menu(items,count+1); touchwin(stdscr); refresh(); items=draw_menu(20-menu_start_col); return scroll_menu(items,8,20-menu_start_col); } else if (key==ESCAPE) { return -1; } else if (key==ENTER) { return selected; } } }
���������ǵ�main������.��ʹ�����������������������ͱ�д�ĺ�����ʹ������ʵĹ���. ��ͬ��ͨ��getch��ȡ��ֵ���ж�F1����F2�Ƿ�����,������draw_menu������Ӧ�IJ˵������ϻ��Ʋ˵�. ���ŵ���scroll_menu�������û�ѡ��ijһ���˵�,��scroll_menu���غ�,��ɾ���˵����岢����ʾ��ѡ��ĵ�Ԫ���� ����Ϣ����.
�ұ����ᵽ���Ǻ���touchwin.����ڲ˵��رպ�û�е���touchwin������ˢ��,��ô���򿪵IJ˵���һֱͣ���� ��Ļ��.������Ϊ�ڵ���refreshʱ,menu����������û����ȫ�ı�stdscr������.��û������д�����ݵ�stdscr��, ��Ϊ����Ϊ��������û�иı�.touchwin��������������WINDOW�ṹ�еı�־λ,��֪ͨrefreshˢ�´��������е���, ֵ���ı���,��������һ��ˢ����������ʱ,��ʹ��������û�иı�ҲҪ����д��һ��.�ڲ˵��رպ�,ѡ��IJ˵���Ϣ��һֱͣ���� stdscr����.�˵�û����stdscr��д����,��Ϊ���ǿ���һ���µ��Ӵ���.
int main() { int key; WINDOW *menubar,*messagebar; init_curses(); bkgd(COLOR_PAIR(1)); 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; WINDOW **menu_items; key=getch(); werase(messagebar); wrefresh(messagebar); if (key==KEY_F(1)) { menu_items=draw_menu(0); selected_item=scroll_menu(menu_items,8,0); delete_menu(menu_items,9); if (selected_item<0) wprintw(messagebar,"You haven't selected any item."); else wprintw(messagebar, "You have selected menu item %d.",selected_item+1); touchwin(stdscr); refresh(); } else if (key==KEY_F(2)) { menu_items=draw_menu(20); selected_item=scroll_menu(menu_items,8,20); delete_menu(menu_items,9); if (selected_item<0) wprintw(messagebar,"You haven't selected any item."); else wprintw(messagebar, "You have selected menu item %d.",selected_item+1); touchwin(stdscr); refresh(); } } while (key!=ESCAPE); delwin(menubar); delwin(messagebar); endwin(); return 0; }
����������˴��뵽һ���ļ�,����������example.c,���������������е�ע��,�����������������������:
gcc -Wall example.c -o example -lcurses
Ϊ�˲��Գ���,�������ڲο�һ�������ظó���.
��̸���˺ܶ����ncurses�Ļ���֪ʶ,Ӧ���㹻���������ij��򴴽�һ���ܺÿ��Ľ���.�������෽��Ĺ��� �����ﶼû���ἰ,���������Ҿ����ʵ��ļ���������man pages�����ҵ��ܶ����õ���Ϣ.�����˺�,���������� �������ᵽ�Ķ��������ݽ�����һ�����ܶ���.
|
��ҳ��LinuxFocus�à¼ï¿½ï¿½Î¬ï¿½ï¿½
© Reha K. Gerçeker, FDL LinuxFocus.org ���������LinuxFocus�������������� |
������Ϣ:
|
2002-03-13, generated by lfparser version 2.27