⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 有没有unix下curses中的菜单函数good.htm

📁 curses界面编程
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<br />          控制字元外一切输入的字元将立刻被一一读取.当处於 nocbreak 模<br />          式时, 从键盘输入的字元将被储存在  buffer 里直到输入  RETURN<br />          或 NEWLINE.在较旧版的 curses 须呼叫 crmode(),nocrmode() 来<br />          取代 cbreak(),nocbreak()<br /><br /><br />     □ nl()<br />        nonl()<br /><br />          用来决定当输入资料时, 按下 RETURN 键是否被对应为 NEWLINE 字<br />          元 ( 如 \n ).<br />          而输出资料时, NEWLINE  字元是否被对应为  RETURN 和 LINDFEED<br />          系统预设是开启的.<br /><br /><br /><br />     □ echo()<br />        noecho()<br /><br />          此函数用来控制从键盘输入字元时是否将字元显示在终端上.系统<br />          预设是开启的.<br /><br /><br />     □ intrflush(win,bf)<br /><br />          呼叫 intrflush 时须传入两个值:<br />          win 为一 WINDOW 型态指标, 通常传入标准输出入屏幕 stdscr<br />          bf 为 TRUE 或 FALSE<br /><br />          当 bf 为 true 时, 当输入中断字元 ( 如 break) 时, 中断的反应<br />          将较为快速.但可能会造成屏幕的错乱.<br /><br /><br /><br />      □ keypad(win,bf)<br /><br />          呼叫 keypad 时须传入两个值:<br />          win 为一 WINDOW 型态指标, 通常传入标准输出入屏幕 stdscr<br />          bf 为 TRUE 或 FALSE<br /><br />          当开启  keypad 後, 可以使用键盘上的一些特殊字元, 如上下左右<br />          等方向键, curses 会将这些特殊字元转换成 curses.h 内定义的一<br />          些特殊键. 这些定义的特殊键通常以 KEY_ 开头.<br /><br /><br /><br />      □ refresh()<br /><br />          refresh() 为 curses 最常呼叫的一个函数.<br /><br />          curses 为了使屏幕输出入达最佳化, 当您呼叫屏幕输出函数企图改<br />          变屏幕上的画面时, curses  并不会立刻对屏幕做改变,  而是等到<br />          refresh() 呼叫後, 才将刚才所做的变动一次完成.  其馀的资料将<br />          维持不变. 以尽可能送最少的字元至屏幕上. 减少屏幕重绘的时间.<br />          如果是 initscr() 後第一次呼叫  refresh(), curses 将做清除萤<br />          幕的工作.<br /><br /><br /><br /><br /> ■ 光标的控制<br /><br />       move(y,x)       将光标移动至 x,y 的位置<br />       getyx(win,y,x)  得到目前光标的位置<br />                       (请注意! 是 y,x 而不是 &amp;y,&amp;x )<br /><br /><br /> ■ 有关清除屏幕的函数<br /><br />           clear()<br />           erase()   将整个屏幕清除<br />                     (请注意配合refresh() 使用)<br /><br /><br /> ■ 如何在屏幕上显示字元<br /><br />     echochar(ch)              显示某个字元<br /><br />     addch(ch)                 显示某个字元<br />     mvaddch(y,x,ch)           在(x,y) 上显示某个字元<br />                               相当於呼叫 move(y,x)&#59;addch(ch)&#59;<br /><br />     addstr(str)               显示一串字串<br />     mvaddstr(y,x,str)         在(x,y) 上显示一串字串<br />                               相当於呼叫 move(y,x)&#59;addstr(str)&#59;<br /><br />     printw(format,str)        类似 printf() , 以一定的格式输出至屏幕<br />     mvprintw(y,x,format,str)  在(x,y) 位置上做 printw 的工作.<br />                               相当於呼叫 move(y,x)&#59;printw(format,str)&#59;<br /><br /><br /> ■ 如何从键盘上读取字元<br /><br />      getch()                        从键盘读取一个字元 (注意! 传回的是整数值)<br />      getstr()                       从键盘读取一串字元<br />      scanw(format,&amp;arg1,&amp;arg2...)   如同 scanf, 从键盘读取一串字元<br /><br />      □例:<br /><br />      int ch&#59;<br />      char string1[80]&#59;   /* 请注意! 不可宣告为 char *string1&#59; */<br />      char string2[80]&#59;<br /><br />      echo()&#59;            /* 开启 echo 模式, 使输入立刻显示在屏幕上 */<br />      ch=getch()&#59;<br />      string1=getstr()&#59;<br />      scanw(&quot;%s&quot;,string2)&#59;<br />      mvprintw(10,10,&quot;String1=%s&quot;,string1)&#59;<br />      mvprintw(11,10,&quot;String2=%s&quot;,string2)&#59;<br /><br /> ■ 如何利用方向键<br /><br />    curses 将一些如方向键等特殊控制字元, 以 KEY_ 为开头定义在 curses.h<br />    这个档案里头, 如 KEY_UP  即代表方向键的  &quot; ↑ &quot;.  但, 如果您想使用<br />    curses.h  所为您定义的这些特殊键的话,  您就必须将   keypad  设定为<br />    TRUE. 否则, 您就必须自己为所有的特殊键定义了.<br /><br />   curses.h 为一些特殊键的定义如下:<br /><br />     KEY_UP          0403           ↑<br />     KEY_DOWN        0402           ↓<br />     KEY_LEFT        0404           ←<br />     KEY_RIGHT       0405           →<br />     KEY_HOME        0406           Home key (upward+left arrow)<br />     KEY_BACKSPACE   0407           backspace (unreliable)<br />     KEY_F0          0410           Function keys.<br />     KEY_F(n)        (KEY_F0+(n))   Formula for f .<br />     KEY_NPAGE       0522           Next page<br />     KEY_PPAGE       0523           Previous page<br /><br />    以上仅列出笔者较常使用的一些控制键, 至於其他控制键的定义, 请自行参<br />    阅 man curses (* 注三)<br /><br />    一并为您列出其他常用的一些特殊字元<br /><br />     [TAB]                 /t<br />     [ENTER]               /r<br />     [ESC]                 27<br />     [BACKSPACE]           127<br /><br /><br />  ■ 如何改变屏幕显示字元的属性<br /><br />    为了使输出的屏幕画面更为生动美丽,  我们常须要在屏幕上做一些如反白,<br />    闪烁等变化.  curses 定义了一些特殊的属性, 透过这些定义, 我们也可以<br />    在 curses 程序□控制屏幕的输出变化.<br /><br />     attron(mod)    开启属性<br />     attroff(mod)   关闭属性<br /><br />    curses.h 里头定义了一些属性, 如:<br /><br />     A_UNDERLINE    加底线<br />     A_REVERSE      反白<br />     A_BLINK        闪烁<br />     A_BOLD         高亮度<br />     A_NORMAL       标准模式 (只能配合 attrset() 使用)<br /><br /><br />    当使用 attron() 开启某一种特殊属性模式後, 接下来在屏幕的输出都会以<br />    该种属性出现. 直到您呼叫 attroff() 将此模式关闭.<br /><br />    请注意, 当您欲 attron() 开启另一种属性时, 请记得利用 attroff()先关<br />    闭原来的属性, 或直接以 attrset(A_NORMAL)  将所有特殊属性关闭.否则,<br />    curses 会将两种属性做重叠处理.<br /><br />     □例:<br /><br />        attrset(A_NORMAL)&#59;            /* 先将属性设定为正常模式       */<br />        attron(A_UNDERLINE)&#59;          /* 加底线                       */<br />        mvaddstr(9,10,&quot;加底线&quot;)&#59;      /* 加底线输出一串字元           */<br />        attroff(A_UNDERLINE)&#59;         /* 关闭加底线模式, 恢复正常模式 */<br />        attron(A_REVERSE)&#59;            /* 开启反白模式                 */<br />        mvaddstr(10,10,&quot;反白&quot;)&#59;       /* 输出一串反白字元             */<br />        attroff(A_REVERSE)&#59;           /* 关闭反白模式, 恢复正常模式   */<br />        attron(A_BLINK)&#59;              /* 开启闪烁模式                 */<br />        mvaddstr(11,10,&quot;闪烁&quot;)&#59;       /* 输出一串闪烁字元             */<br />        attroff(A_BLINK)&#59;             /* 关闭闪烁模式, 恢复正常模式   */<br />        attron(A_BOLD)&#59;               /* 开启高亮度模式               */<br />        mvaddstr(12,10,&quot;高亮度&quot;)&#59;     /* 输出一串高亮度字元           */<br />        attroff(A_BOLD)&#59;              /* 关闭高亮度模式, 恢复正常模式 */<br /><br /><br />  ■ 其他常用的一些函数<br /><br />       beep()              发出一声哔声<br />       box(win,ch1,ch2)    自动画方框  ch1: 画方框时垂直方向所用字元<br />                                       ch2: 画方框时水平方向所用字元<br /><br />                                       example: box(stdscr,'|','-')&#59;<br />                                       将以 | 及 - 围成一个方框<br /><br />  ■ 应用完整□例<br /><br />    下面所举的例子,  即完全利用刚刚所介绍的含式来完成.这个程序可将从键<br />    盘上读取的字元显示在屏幕上, 并且可以上下左右方向键来控制光标的位置<br />    , 当按下 [ESC] 後, 程序即结束.<br /><br />    您有没有发现, 这不就是一个简单全屏幕编辑器的雏形吗?<br /><br /><br />   #include &lt;curses.h&gt;                  /* 引进 curses.h , 并自动引进 stdio.h */<br /><br /><br />   #define StartX  1                    /* 决定光标初始位置 */<br />   #define StartY  1<br />

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -