Cursor sieht doof aus
-
Hi Ho !
Ich habe ein Menue für die Konsole unter MSVS98 geschrieben und lasse dies in einem Vollbildmode ausgeben.
Leider sehe ich immerwieder deisen dämlichen Cursor und den Mauspointer.
Die Funktionen hier im Forum habe ich schon durch und die funzen leider alle nicht oder nur nicht im Vollbilmode.Wer hat denn da eine ultimative Lösung für mich ??
CU THX
Actras
-
arbeitest du mit der konsolenapi?
kann gerade nicht ins faq schauen, aber probier mal sowas
//...noch einiges GetConsoleScreenBufferInfo(hcog, &pConInfo); pCurInf.dwSize = 100; pCurInf.bVisible = FALSE; SetConsoleCursorInfo(hcog, &pCurInf);
-
Also die Funktionen die hier stehen funzen schon aber nur, wenn ich zB mit einer for Schleife einen String oder ein char Array ausgeben lasse. Dann ist er weg.
Sobald ich aber auf eine Eingabe warte, ist er wieder da. und der Mauszeiger ebenso.
Ich muss dazu sagen, daß ich noch nicht so konfirm in C++ bin. Also etwas erklärender bitte
CU
Actras
-
@elise: Was bedeuetet hcog? handle (for) console output g... ?
@Actras: Bei Eingaben wird es sehr schwer, aber falls du auf cin>> verzichten kannst, gibt es einen Trick *g*:
Du hast irgendwo am Bildschirm ein Feld (passt z.B. in den Rahmen oder so), welches ein Voll-Ausgemaltes ASCII-Zeichen in Cursor-Farbe enthält.
Nun liest du dort einen String Zeichen für Zeichen mit getch() (Infos zu getch siehe FAQ) ein. Bei getch wird kein Zeichen ausgegeben, einlesen tust du an der Position die voll ausgemalt ist (kein Cursor sichtbar), ausgeben tust du das eingelesene Zeichen allerdings an der gwünschten Position.
Die Zeichen fügst du an den String aneinander. Extra behandelt werden müssen #13 - Enter und #8 Backspace.
Solltest du Probleme haben beim Erstellen einer solchen Funktion melde dich nochmals :).
MfG SideWinder
-
@SideWinder
ein "g" für grins .. *g*
-
@elise: Das ist aber jetzt nicht ernst gemeint, oder?
MfG SideWinder
-
Also erstmal ein Big THX für die Mühe.
Ok, die Eingabe erfolgt bei mir sowieso mit getch(); nur ist da trotzdem ein blinkender Unterstrich alias der Cursor ;-), der weg muss.
das menü funktioniert folgendermaßen:
einfache ausgabe in die Screenmitte, Menüpunkte untereinander, die man mit Pfeil bzw. Menüpunkttasten (jeder EIntrag hat entweder eine Zahl oder einen Buchstabe zugeordnet bekommen)
das ich mit den Pfeiltasten einen Balken im Menü wandern lasse und deshalb getch() verwende, benötige ich ja die eingabe ohne darauffolgendes abschließen für jeden Befehl. Erst die Entertaste führt dann den aktuellen Menüpunkt aus.Tja, da das ein Abschlussprojekt für unseren C++ Kurs ist und ich eigentlich fertig bin ist das nicht so wild. Nur wie gesagt, es sieht halt unschön aus
Und wegen der Funktion, ein paar Hilfen währen da nicht schlecht ;-)))))))))))
CU
Actras
-
Also du hast eine switch-abfrage, die cursor up, down und enter abfrägt, vorher kommt ein getch() also soetwas:
draw_menu (); Wahl = 'X'; // Dummy, Hauptsache nicht 13 (Enter) POS = 1; while ( Wahl != 13 ) { colcout.gotoxy ( POSX , POSY ); Wahl = getch (); if ( Wahl == 0 || Wahl == 224 ) { Wahl = getch (); switch ( Wahl ) { // CURSORTASTEN ABFRAGEN UND MENÜ DEMENTSPRECHEND UMZEICHNEN // POS ANPASSEN } } else if ( Wahl == 13 ) { AUSGEWAEHLTER_PUNKT = POS; } }
POSX und POSY speichern die Position die voll ausgemalt ist. Eine Position voll ausmalen geht folgendermaßen:
cout << static_cast <char> ( 219 );
MfG SideWinder