2016-02-01 43 views
1

我正在寫一個聊天。 我的問題是,當用戶A輸入他們的消息用戶B已經完成他的。用戶A仍然在打字,接收到消息,並且弄亂了他的控制檯窗口。用戶輸入到控制檯,同時輸出文字

我可以等到用戶A完成鍵入他的消息,直到我顯示用戶B的消息,但這太容易了。 我讀了可以創建兩個separate Console Windows(一個用於輸入,一個用於輸出)。

有沒有辦法做到這一點?

例如,兩個不同的線程使用兩個不同的遊標訪問控制檯窗口。

看來這是可能的紅寶石,但我用C++編寫。

+0

因此,這個聊天應用程序是一個沒有自定義GUI的控制檯應用程序? –

+0

是的。我也許我會稍後添加一個,但現在它只是一個控制檯應用程序 – Chronophylos

回答

1

在「過去的日子」裏有很多DOS控制檯排序的程序,它們移動光標在屏幕上的各個地方繪製文本。你可以做類似的事情。假設控制檯窗口的高度爲25行,可以將其中的20個作爲收到消息的「歷史記錄」,一個分隔線,然後對於當前傳出消息使用4行。

當消息進入時,擦除舊消息,然後將舊消息重新拉高,然後將新消息寫入其位置。然後繼續接受輸入消息的輸入。

您需要定義在給定行上寫入輸入的函數,以便您可以將文本放在您想要的行上。另一個看起來很簡單的選擇是使用GUI?只是說。你提供了一個有多個控制檯窗口的鏈接,所以你顯然知道如何做到這一點。

+-------------------------------+ 
| TOM: Hey man does this work? | 
| TOM: wow you type slow.  | 
|        | 
|        | 
|        | 
|        | 
+-------------------------------+ 
| Yes, it seems to be worki  | 
+-------------------------------+ 
+0

是的考慮它我可能應該添加一個GUI。 我只是希望找到一個更好的解決方案。 – Chronophylos