用户在输出文本时输入到控制台

时间:2016-02-01 14:36:54

标签: c++ multithreading input console output

我正在写聊天。 我的问题是,当用户A正在键入他们的消息用户B已经完成了他的。用户A仍在打字,收到消息并且正在弄乱他的控制台窗口。

我可以等到用户A完成输入他的消息,直到我显示用户B的消息,但这太容易了。 我读到可以创建两个separate Console Windows(一个用于输入,一个用于输出)。

有办法吗?

例如,两个不同的线程使用两个不同的游标访问控制台窗口。

看起来这可能是红宝石,但我用C ++写作。

1 个答案:

答案 0 :(得分:1)

在“旧时代”,有许多DOS控制台类型的程序,它们移动光标以在屏幕上的各个位置绘制文本。你可以做类似的事情。假设控制台窗口高25行,您可以将其中的20个用于接收消息的“历史记录”,分隔线,然后为当前传出消息创建4行。

当收到消息时,删除旧消息,然后重新绘制旧消息,然后在其位置写入新消息。然后继续接受输入消息的输入。

您需要定义在给定行上写入输入的函数,以便将文本放在您希望它所在的行上。另一个看似简单的选择是使用GUI吗?只是说。你提供了一个拥有多个控制台窗口的链接,所以你显然知道如何做到这一点。

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