Дещо про вікна

До того як поринути в розмаїття функцій ncurses, дозвольте роз'яснити декілька речей про вікна. Ми повернемося до них для докладнішого опису пізніше.

Вікно - це уявний екран, визначений системою curses. Вікно не означає облямовані вікна, які ви знайдете на платформах Win9X. Під час ініціалізації, curses створює стандартне вікно під назвою stdscr, що відповідає вашому 80x25 (або розмірові поточного терміналу) екранові. Якщо ви здійснюєте такі прості речі як вивід декількох ланцюжків, читання вводу тощо, тоді можете сміливо користатися цим єдиним вікном для ваших цілей. Одночасно, ви можете створити нові вікна, і викликати функції, що діятимуть виключно стосовно новоутворених вікон.

Наприклад, якщо ви викличете

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

це виведе ланцюжок на stdscr у поточному положенні курсору. Аналогічно, виклик refresh() діє стосовно тільки stdscr.

Якщо, скажімо, ви створили нове вікно, тоді потрібно викликати ті самі функції із доданим 'w' попереду.

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

Як побачите далі, назви функцій слідують тій самій умовності. Для кожної функції, звично, існує ще три різновиди.

printw(string);               /* Вивід на stdscr у поточному       *
                               * положенні курсору                 */
mvprintw(y, x, string);       /* Переміститься до (y, x), потім    *
                               * виведе ланцюжок                   */
wprintw(win, string);         /* Вивід у вікно win у поточному     *
                               * положенні курсору в цьому вікні   */
mvwprintw(win, y, x, string); /* Переміститься до (y, x) відносно  *
                               * координат вікна, а потім надрукує */

Як правило, функції без префіксу 'w', це макроси, що поширюють дію відповідних функцій із 'w' на stdscr, тобто як win стоїть stdscr.