窗口定位在ncurses中

时间:2011-07-25 01:59:06

标签: c ncurses

我正在尝试使用ncurses在C中编写一个简单的聊天应用程序,这两个我都是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 个答案:

答案 0 :(得分:4)

哦,[咒骂/删除]!我是个笨蛋。事实证明我的问题是双重的:

  1. 我无意中混淆了我的X和Y分配,
  2. 我还在功能中颠倒了宽度和高度参数。
  3. 这意味着定位工作正常,直到我对基本定位数学做了一些假设。

    我应该补充一点,这部分是因为我在X / Y位置上构思终端定位,其中行/列是适当的范例。它们只是部分相同。

    自拍慢拍