? Ausgabe nicht in Eingabezeile schreiben ?



  • hallo!
    also die situation ist diese: ich schreibe ein einfaches, konsolenbasiertes, chat-programm. Mit einem client und einem server.
    Vereinfacht hab ich eine schleife die mit "cin" die eingaben liest und zeilenweise verschickt. Und eine schleife die in einem separaten thread das ankommende (recv()) mit "cout" in die konsole schreibt.
    Das problem hierbei ist dass, wenn jemand z.B am server was sendet während am client jemand was am schreiben ist, der client das empfangene mitten in die eingabe des benutzers schreibt.
    Deshalb hätte ich gern dass die eingabezeile auch nur zur eingabe benutzt wird. Und wenn etwas ankommt, er es an einen anderen ort schreibt (z.B darüber).

    Ich hab im FAQ nichts dazu gefunden, auch bei der improved console nicht :(. Wenn möglich würde ich gerne ohne allegro oder dergleichen auskommen.

    danke, schonmal im voraus!



  • vergessen: ich benutz VC++ und Windows



  • Ich würd die Eingabezeile ausschneiden (d.h. in der Konsole löschen, im Programm speichern), den angekommenen Text ausgeben und die Eingabezeile wieder dranhängen.



  • Wäre auch eine idee, weist du zufälligerweise wie ich das geschriebene lesen kann ohne dass der user mit [enter] bestätigt?
    Oder müsste ich dann mit getche() jeden buchstaben lesen?



  • Das wär wohl das sinnvollste (wobei ich getche nicht kenne).



  • Das geht mit getche() ja, aber du musst dann alle Buchstaben einzeln lesen.

    Zum ursprünglichen Problem: recv() setzt vor der Ausgabe noch die Ausgabeposition an ihre Position, schreibt den erhaltenen Text raus und setzt den Cursor wieder zurück. Sollte funktionieren.

    MfG SideWinder



  • OK, wie verschiebe ich die Ausgabeposition?
    es gibt "SetConsoleCursorPosition()" aber die will koordinaten, und 0:0 ist oben links im buffer. Da es kein "GetConsoleCursorPosition()" gibt habe ich keine ahnung wo die richtigen koordinaten sind.
    Gibts da noch eine brauchbare fuunktion? 🙄


Anmelden zum Antworten