第五章:窗口机制简介在我们进入数以万计的CURSES函数以前,让我们先了解一下窗口(windows)的知识。关于窗口机制的详细信息我们会在以后的章节中详细介绍。这一章只是一些基础的知识,为了给讲解输入输出函数作铺垫。当然,在现在就树立一个窗口的概念是很有好处的。
窗口实质上是由CURSES系统定义的一个假想的屏幕。这种窗口并不像Windows平台上的窗口,这些窗口没有边框。当CURSES初始化的时候,它会默认创建一个叫做stdscr的窗口。这个窗口的大小一般是80列,25行的屏幕(根据显示器或者显卡的不同,可能会出现不同的大小)如果你运行简单的任务,比如打印几个字符串、输入一些数据等等……这样的单窗口完全可以满足你的需要。当然,你也可以通过窗口系统的函数创建你自己的窗口。
举个例子,如果你调用以下函数:
printw("Hi! There!");
refresh();
它会在stdscr上的当前光标位置输出"Hi! There!"。同样,调用refresh()函数,它只更新stdscr上的缓冲区。
例如,你已经建立了一个叫做win的窗口。你要在这个窗口上输出以上的内容。只需要在普通的函数前添加w前缀就可以了。同时,函数中的参数也要相应的变化(要指明你所要显示信息的窗口):
wprintw(win, "Hi There !!!");
wrefresh(win);
你将在这份文档的其余部分看到,这些函数有相同的命名规则。
printw(string); /* 在stdscr的当前光标位置打印字符串string */
mvprintw(y, x, string); /* 将字符串string打印在坐标(y,x)处 */
wprintw(win, string); /* 在窗口win的当前光标位置打印字符串string */
mvwprintw(win, y, x, string); /* 将光标移动到窗口win的(y,x)然后打印字符串string */
没有w前缀的函数在调用时被扩展成以stdscr作为当前窗口的函数。