2011-07-25 56 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,那麼我就有一個鎳幣......在進行深入搜索斑馬蹄聲音的來源之前,總是要檢查這些類型的骨骼。 –