📄 00000002.htm
字号:
for (i=0;i<COLS-1;++i) /* 画两个视窗间的界限 */ <BR> mvaddch(LINES/2-1,i,'-'); <BR> <BR> nowwin=0; /* 先指定游标在第一视窗 */ <BR> curwin=win[nowwin]; <BR> getyx(curwin,y,x); <BR> move(0,0); <BR> refresh(); <BR> <BR> refresh(); <BR> <BR> do { <BR> ch=getch(); <BR> switch(ch) { <BR> <BR> case KEY_UP: --y; /* 判断是否"↑"键被按下 */ <BR> break; <BR> case KEY_DOWN: ++y; /* 判断是否"↓"键被按下 */ <BR> break; <BR> case KEY_RIGHT: ++x; /* 判断是否"→"键被按下 */ <BR> break; <BR> case KEY_LEFT: --x; /* 判断是否"←"键被按下 */ <BR> break; <BR> case '\r': /* 判断是否 ENTER 键被按下 */ <BR> ++y; <BR> x=0; <BR> break; <BR> case '\t': /* 判断是否 TAB 键被按下 */ <BR> touchwin(helpwin); <BR> wrefresh(helpwin); /* 呼叫 ONLINE HELP */ <BR> getch(); <BR> touchwin(win[1-nowwin]); /* 重画第一,二视窗 */ <BR> wrefresh(win[1-nowwin]); <BR> touchwin(curwin); <BR> wrefresh(curwin); <BR> break; <BR> case 127: /* 判断是否 BACKSPACE 键被按下 */ <BR> wmove(curwin,y,--x);/* delete 一个字元 */ <BR> waddch(curwin,' '); <BR> break; <BR> <BR> case 27 : nowwin=1-nowwin; /* [ESC] 键切换视窗 */ <BR> curwin=win[nowwin]; <BR> getyx(curwin,y,x); <BR> break; <BR> default: <BR> waddch(curwin,ch); <BR> x++; <BR> break; <BR> } <BR> wmove(curwin,y,x); <BR> wrefresh(curwin); <BR> } while(1); <BR> } <BR> <BR> <BR> void initial() <BR> { <BR> initscr(); ←┐ <BR> cbreak(); │ 启动 curses 模式 <BR> nonl(); │ <BR> noecho(); ←┘ <BR> intrflush(stdscr,FALSE); <BR> keypad(stdscr,TRUE); <BR> refresh(); <BR> } <BR> <BR> <BR> <BR> 执行结果: <BR> <BR> ┌—————————————————————————————┐ <BR> │ screen1 │ <BR> ┌→ │ this is screen 1, you can press [ESC] to │ <BR> 以 │ │ switch between screen 1 and screen 2. │ <BR>[ESC]│ │ │ <BR> 切 │ │ │ <BR> 换 │ │----------------------------------------------------------│ <BR> 游 │ │ screen 2 │ <BR> 标 │ │ │ <BR> 位 └→ │ _ (游标) │ <BR> 置 │ │ <BR> └—————————————————————————————┘ <BR> ↑ 按下[TAB] 键,出现 ONLINE HELP <BR> ↓ <BR> ┌—————————————————————————————┐ <BR> │ screen1 │ <BR> │ this is screen 1, you can press [ESC] to │ <BR> │ switch□--------ONLINE HELP--------□ │ <BR> │ | Hit any key to continue..| │ <BR> │ □---------------------------□ │ <BR> │----------------------------------------------------------│ <BR> │ screen 2 │ <BR> │ │ <BR> │ │ <BR> │ │ <BR> └—————————————————————————————┘ <BR> ↑ 按任意键, ONLINE HELP 关闭 <BR> ↓ <BR> ┌—————————————————————————————┐ <BR> │ screen1 │ <BR> │ this is screen 1, you can press [ESC] to │ <BR> │ switch between screen 1 and screen 2. │ <BR> │ │ <BR> │ │ <BR> │----------------------------------------------------------│ <BR> │ screen 2 │ <BR> │ │ <BR> │ _ (游标) │ <BR> │ │ <BR> └—————————————————————————————┘ <BR> <BR> <BR> <BR> <BR> ■ 结语 <BR> <BR> 我们以连续两期来介绍 curses.h 函式库的使用方法, 相信同学对撰写这类的 <BR> 程式应该不再陌生. 所谓『戏法人人会变, 巧妙各有不同』. 知道了基本函式 <BR> 的呼叫方法, 能不能写出实用的程式, 就靠各位的巧思和创造力了. <BR> <BR> <BR> 有任何问题建议, 欢迎 E-mail 至 <A HREF="mailto:ljh@CCCA.NCTU.edu.tw">ljh@CCCA.NCTU.edu.tw</A> , 谢谢 ! <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -