Eine Funktion zum...
-
Hi Communtity
Ich habe eine Funktion geschrieben namens goToXY
Um die Funktion aber "dynamisch" einzusetzn wollte ich fragn ob es eine Funktion gibt die die aktuelle Position des "Cursors" im Konsolen-Fenster ausgibt? (also in welcher Zeile der Cursor sich momentan befindet)lg c4f
-
Ich denke nicht, dass das mit Standardmitteln geht. Aber miss doch einfach die Zeichenlängen bei Ausgaben. Bei '\n' erhöhst du die y-Koordinate, bei normalen Zeichen die x-Koordinate. Evtl. musst du noch Tabulator etc. separat regeln.
-
Alles, was das Konsolenherz begehrt:
http://msdn.microsoft.com/en-us/library/ms682073(VS.85).aspxAllerdings nur für Windows.
-
Nexus schrieb:
Ich denke nicht, dass das mit Standardmitteln geht. Aber miss doch einfach die Zeichenlängen bei Ausgaben. Bei '\n' erhöhst du die y-Koordinate, bei normalen Zeichen die x-Koordinate. Evtl. musst du noch Tabulator etc. separat regeln.
Das Problem ist ich hab auch schon an '\n' gedacht dass die y-Koordinate dann dementsprechend erhöht wird, doch ich kann mich nicht drauf verlassen da ich das in einer Klasse verwende und somit glaube ich nicht kontrollieren kann was vorher vom Benutzer der Klasse schon ins Konsolenfenster geschrieben wird. Die einzige Lösung wäre dass man im beim erstellen des Objekts den Anfagswert für Y übergibt
Oda geht es vllt noch einfacher?
lg cf4
-
drakon schrieb:
Alles, was das Konsolenherz begehrt:
http://msdn.microsoft.com/en-us/library/ms682073(VS.85).aspxAllerdings nur für Windows.
Also ich hab ma nachgeschaut und hab diese Funktion gefunden : GetConsoleScreenBufferInfo, diese gibt die aktuele Position des Cursors in X/Y Koordinaten zurück
Ich werd ma kucken ob ich damit klar komm
danke für den Tipp drakon
lg c4f
-
So ich hab bissl probiert und funktioniert auch
main.cpp
#include <iostream> #include <windows.h> int main() { HANDLE hStdout; CONSOLE_SCREEN_BUFFER_INFO csbiInfo; std::cout << "\n\n\n" << std::endl; hStdout = GetStdHandle(STD_OUTPUT_HANDLE); if (! GetConsoleScreenBufferInfo(hStdout, &csbiInfo)) { std::cout << "Error"; return 0; } std::cout << csbiInfo.dwCursorPosition.Y + 1; std::cin.get(); return 0; }
danke nochmals drakon
lg c4f
-
danke nochmals drakon
Keine Ursache.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.