Menü - Auswahl mit Pfeiltasten



  • Hallo!

    Ich bin noch Anfänger, was Programmieren betrifft.

    Bisher habe ich bei meinen Programmen die Menüs immer mit Zahlen einlesen gestaltet ("Menüpunkt1: 1 drücken\n Menüpunkt2 - 2 drücken usw. ")

    Nun möchte das ganze per Pfeiltasten machen. Ich habe mir den Thread mit den Pfeiltasten durchgelesen und soweit auch hinbekommen. Nun aber weiß ich nicht, was ich machen soll, wenn ich die Pfeiltasten eingelesen habe. Ich habe mir das etwa so vorgestellt: Ich schreibe alle Menüpunkte untereinander und lasse immer links ein wenig Platz für ein weiteres Zeichen (zb. ein '>'). Wenn der Benutzer nun die nach-unten-Pfeiltaste drückt, dann soll sich das '>' halt um eine Zeile nach unten bewegen.
    Ich habe mir gedacht, ich könnte einfach den Bildschirm löschen und alles neu zeichnen (und das '>' halt dann an richtiger Position). Aber das ist erstens bisschen komplizierter, da ich rundherum auch noch einiges ausgegeben habe und außerdem 'schlimmert' das Bild dann bei schnelleren Eingaben.
    Unter borland gibt es glaube ich eine Funktion namens window, mit der ich nur einen Teil der Konsole löschen kann, allerdings arbeite ich mit dem VC++ 6 und da gibt es diese Funktion nicht (zumindest habe ich sie nicht gefunden).
    Könnt ihr mir sagen, wie ich das machen kann?

    Danke!



  • Du kannst dir einerseits mal die Funktion gotoxy() (wird leider nicht von jedem Compiler unterstützt) anschauen (Include conio.h; du kannst auch mal hier mal die Suchfunktion dafür nutzen, da sind schon einige Beiträge gekommen). Andererseits kannst du dir auch mal die Improved Console in der Konsolen-FAQ anschauen und da speziell das Positionieren des Cursors ;).



  • hallo

    pfeiltasten ansprechen im konsolenfaq oder zum bleistift hier
    http://www.c-plusplus.net/forum/viewtopic.php?t=59193&highlight=pfeiltasten

    visual studio kannst du die konsoleanapi nutzen (siehe konsolenfaq des forums) und dort findest du auch massen weitere hinweise, positionierung, löschen.. etc.



  • Zuerst mal Danke für die Antworten.
    Wie ich Pfeiltasten einlese, weiß ich, und das mit dem gotoxy hab ich auch schon hingekriegt. Allerdings denke ich, geht das zwar bei einem Zeichen ziemlich gut, allerdings wirds bei sowas (Click, das rote Kästchen soll entsprechend der Pfeiltasteneingabe bewegt werden) ein bisschen komplizerter sein könnte, jedes einzelne Zeichen mit gotoxy und printf zu überschreiben.
    Ich weiß, es gehört nicht mehr wirklich zum Thema, aber gibt es vielleicht eine andere Möglichkeit, soetwas zu bewerkstelligen (bzw. gibt es die Funktion "window" (unter Borland) auch irgendwie unter VC++?)
    Danke!

    //Edit: Ich hab den letzten Beitrag nicht ganz fertig gelesen, sry, allerdings habe ich das über die "Konsolenapi" im Forum "FAQ - DOS und Win32-Konsole" nicht gefunden (oder ich glaub ich bin etwas blind)



  • Ohne Positionierung wird das nicht so einfach im Textmodus funktionieren. Du brauchst auch nicht für jedes Zeichen den Cursor neu positionieren. Schließlich rückt der ja immer um eins nach rechts, von ganz allein ;).

    Eine andere Möglichkeit wär noch in einen Grafikmodus zu wechseln, da würde es dann Funktionen geben, mit denen du z. b. diesen roten Kasten zeichnen kannst und dann natürlich mit der gleichen Funktion auch wieder mit der Hintergrundfarbe überzeichnen (dass er sozusagen wieder weg ist).


Anmelden zum Antworten