5. 关于窗口的说明

在我们深入研究众多 ncurses 函数之前,让我先澄清一些关于窗口的事情。窗口在接下来的 章节 中详细解释。

窗口是由 curses 系统定义的虚拟屏幕。窗口不是指您通常在 Win9X 平台上看到的带边框的窗口。当 curses 初始化时,它会创建一个名为stdscr它代表您的 80x25(或您正在运行的窗口大小)屏幕。如果您正在执行简单的任务,例如打印一些字符串、读取输入等,您可以安全地使用此单个窗口来满足您的所有目的。您也可以创建窗口并调用显式作用于指定窗口的函数。

例如,如果您调用

    printw("Hi There !!!");
    refresh();

它会在当前光标位置在 stdscr 上打印字符串。同样,调用 refresh() 也仅作用于 stdscr。

假设您已经创建了 窗口,那么您必须调用一个在常用函数名称前添加 'w' 的函数。

    wprintw(win, "Hi There !!!");
    wrefresh(win);

正如您将在文档的其余部分看到的那样,函数的命名遵循相同的约定。对于每个函数,通常还有另外三个函数。

    printw(string);        /* Print on stdscr at present cursor position */
    mvprintw(y, x, string);/* Move to (y, x) then print string     */
    wprintw(win, string);  /* Print on window win at present cursor position */
                           /* in the window */
    mvwprintw(win, y, x, string);   /* Move to (y, x) relative to window */
                                    /* co-ordinates and then print         */

通常,不带 w 的函数是宏,它们会扩展为相应的带有 stdscr 作为窗口参数的带 w 函数。