Chat-console mit Threads weiterutschen lassen ... ?



  • Hallo !

    ich habe folgendes Problem:

    ich habe mit hilfe der winapi über CreateThread() einen Thread aufgerufen, der nichts anderes tut, als Daten (strings) vom anderen chatpartner zu empfangen und dann gleich über printf() auszugeben...
    funktioniert einwandfrei, mit hilfe dieses Threads hab ich jetz das problem nicht mehr, dass ich entweder nur daten empfangen kann oder nur sachen eingeben kann, alles funktioniert jetz "leichzeitig" !

    nur:
    wenn ich grad am tippen bin und mein thread liefert mir ne message und druckt sie aus, dann bricht er die zeile ab in der ich gard am tippen war... was natürlich sehr störend wirkt, vor allem wenn man
    längere sätze eintippt ..

    gibt es eine möglichkeit die console so art weiterrutschen zu lassen ?? also dass er die zeile in der ich grad am tippen war beibehält ... bedeuted dass er die message dann über der zeile in der ich grad tipp ausdrucken muss und nicht drunter ..

    is dieses problem überhaupt lösbar ?? ich hoffe ihr wisst was ich mein...

    thx

    haMMer



  • Lad dir die Improved Console runter. Ist hier auf www.c-plusplus.net zu finden.

    Damit kannst du die Cursorposition bestimmen.



  • mit hilfe dieser funktion könnte mein problem gelöst sein ?

    damn eigentlich hätte ich das isn console forum reinschreiben sollen, naja egal jetz

    hmm mir fällt da auf die schnelle gar kein algorythmus ein... ich probiers mal
    wenn ich ihm sag er solls eine zeile obendrüber schreiben, dann darf er aber nicht das überschreiben, was da obendrüber gestanden ist, sondern das ganze soll sich ja verschieben..

    [ Dieser Beitrag wurde am 31.03.2003 um 18:20 Uhr von Hammer editiert. ]



  • kanns ja vielleicht einer verschieben

    danke

    🙄



  • also ich hab grad folgende probleme , wäre dankbar wenn mir jemand etwas helfen könnte :

    zum einen bin ich jetz während ich das prob mit dem weiterrutschen der console zu lösen versucht habe, auf ein anderes prob gestoßen...
    ich hab meine unterfunktionen etwas umgeschrieben... und zwar druckt er wenn ich ne message per socket bekomme anstatt 'hallo' 'lollo' aus .. ?? k.a.
    hier erstma die unterfunktion:

    char *MyConsole::getmessage(char *buffer)
    {
        //char buffer[BUFFER_SIZE];
        int bytes;
    
        bytes = recv(socksr, buffer, sizeof(buffer)-1, 0);
        if(bytes == -1)
            return 0;
    
        buffer[bytes]='\0';
        //printf("%s", buffer);
        return buffer;
    }
    

    in meinem hauptprog sieht das dann so aus:

    DWORD WINAPI ThreadProc(PVOID wParam)
    {
        wParamPub = wParam;
        mycon.getmessage(buffer);
        printf("%s", buffer);
        return ((DWORD)wParam);
    }
    

    buffer wurde vorher als char buffer[BUFFER_SIZE]; definiert
    BUFFER_SIZE = 1024

    so.. in der main wird dann irgendwann der thread ausgeführt, aber er druckt dann manche zeichen falsch aus !

    NUR: wie ihr sehen konnt, hatte ich vorher das buffer in der funktion definiert und gleich dort schon geprintet , siehe //
    mit der variante gings einwandtfrei
    aber jetz nich mehr ganz ...

    weiss einer was ?

    was ich noch wissen wollte..
    wenn ich per gets() eine variable grad beim einlesen bin und diese funktion durch ein thread unterbrochen wird, bleiben die chars in der variable oder werden die chars erst per return in die variable geschoben ?

    sonst würd ich die var mit getchar einlesen oder so, dann könnt ich nämlich die zeile löschen, dort die message ausdrucken lassen und dann eins drunter einfach den string ausdrucken bis zu der stelle, wo ich aufgehört hab zu tippen, damit könnt ich das weiterrutschen simulieren ..

    hmm

    mfg haMMer

    [ Dieser Beitrag wurde am 12.04.2003 um 13:31 Uhr von Hammer editiert. ]


Anmelden zum Antworten