Расположение окна в курсах - PullRequest
4 голосов
/ 25 июля 2011

Я пытаюсь написать простое приложение чата на C, используя ncurses, оба из которых я новичок в PHP. (Да, я знаю. Спасибо. Я приму этот совет близко к сердцу. Пожалуйста, опусти оружие.)

Я попытался создать два окна, одно для ввода и одно для текста канала, например:

int termwidth = getmaxy(stdscr);
int termheight = getmaxx(stdscr);

WINDOW *channel = newwin(termwidth, termheight - 1, 0, 0);
scrollok(channel, TRUE);

WINDOW *input = newwin(termwidth, 1, termheight + 1, 0);
scrollok(input, TRUE);

и затем установите позицию курсора для ввода:

wmove(input, 0, 0);

для того, чтобы поместить типизированный ввод во второе окно, которое должно занимать один столбец в нижней части терминала, тогда как вывод появляется в первом окне, которое заполняет остальную часть пространства терминала.

Вывод появляется , чтобы правильно заполнить верхнее окно (канал), при этом курсор ввода мигает в нужном месте, но изменение его размера не приводит к предсказуемым результатам, и типизированный ввод не выполняется в окно ввода вообще.

Полный источник доступен здесь: http://pastebin.com/X8apHUgh

Подводя итог, я спрашиваю, почему ввод ведет себя неожиданно, и почему рисование окна "канал" дает странные результаты.

1 Ответ

4 голосов
/ 25 июля 2011

О, [ругатель / удален]!Я ненормальный.Оказывается, моя проблема была двоякой:

  1. Я случайно смешал свои назначения X и Y, и
  2. Я также изменил параметры ширины и высоты в функциях.

Это означало, что позиционирование работало должным образом, до . Я сделал некоторые предположения для базовой математики позиционирования.

Я должен добавить, что это отчасти потому, что я определял терминальное позиционирование в терминахположения X / Y, где row / cols - парадигма на месте.Они только частично эквивалентны.

медленный хлопок для себя

...