2011-07-25 51 views
4

我正在尝试使用ncurses编写一个简单的聊天应用程序,这两个都是我在PHP中使用的背景。 (是的,我知道,谢谢,我会把这个建议放在心上,请放下枪支。)在ncurses中定位窗口

我试图做的是创建两个窗口,一个用于输入,另一个用于频道文本,就像所以:

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

综上所述,我问为什么输入工作不正常,为什么绘制的“通道”窗口产生奇怪的结果。

回答

4

呵呵,[expletive/deleted]!我是一个傻子。事实证明,我的问题是双重的:

  1. 我无意中混合我的X和Y分配和
  2. 我也扭转了函数的宽度和高度参数。

这意味着定位工作正常,直到我对基本定位数学做了一些假设。

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

慢拍自

+1

什么是工作的代码? – 2011-12-30 00:27:47

+0

我自己也是新手,如果我每次都混淆了x和y,那么我就有一个镍币......在进行深入搜索斑马蹄声音的来源之前,总是要检查这些类型的骨骼。 –