[C / C++ ] gotoXY mit gcc/g++/gpp mingw32+DJGPP

19/07/2010 - 17:26 von Robert Hartmann | Report spam
Hallo zusammen,

Aus "Turbo/Borland-Pascal-Zeiten" schwirrt mir gotoXY
im Kopf rum, um an bestimmte Stellen in der
"Eingabeaufforderung" oder im
"MS-DOS-Modus"=Start->Beenden->MS-DOS-Modus
zu springen.

Eine Funktionalitàt, die ich früher für
Text-Bildschirmmasken gerne benutzt habe.


Borlands conio.h (von z.B. Turbo C) bietet
ebenfalls ein gotoXY an.


DJGPP bringt wohl sein eigenes gotoxy mit:
http://www.delorie.com/djgpp/doc/li...c_459.html


Eine "Borland-style CONIO implementation for MinGW/Dev-C++"
gibt es wohl unter http://conio.sourceforge.net/
(hab ich nicht probiert)


Wie man unter

http://msdn.microsoft.com/en-us/lib...ition.aspx

lesen kann, làsst sich mit dem .Net Framework
eine beliebige Position in der Konsole (cmd.exe / command.com)

Da ich kein .NET einsetze, habe ich nach
visualC + SetConsoleCursorPosition gesucht.
Dabei bin ich auf http://forum.chip.de/c-c/clrscr-vis...06550.html
auf

#include <windows.h>
void gotoxy(int x,int y)
{
COORD CurPos;
CurPos.X = x;
CurPos.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),CurPos);
}

gestoßen, was auch mit mingw32 kompilierbar ist.


Nebenbei ließe sich ein C++ gotoxy für eine ANSI-Control-Sequenz
verstehende "Konsole" so erreichen, in Anlehnung an:
http://www.mathematik.uni-ulm.de/sa...uenzen.pdf

void gotoXY_ANSI(unsigned x, unsigned y) {
// \033 == \x1B == ESC
std::cout << "\033[" << y << "d\033[" << x << 'H';
}



Aber nun zu meiner Frage:

Welchen Weg schlagt Ihr vor für eine compilerübergreifende
Nutzung von gotoxy:
- mingw32
- djgpp
- MS Visual C (ohne .NET)
- C/C++ von Borland

für Win9x, WinNT bis WinXP
"Eingabeaufforderung" (command.com / cmd.exe)
"MS DOS-Modus"



Gruß Robert
 

Lesen sie die antworten

#1 Stefan Reuther
19/07/2010 - 19:16 | Warnen spam
Robert Hartmann wrote:
Welchen Weg schlagt Ihr vor für eine compilerübergreifende
Nutzung von gotoxy:
- mingw32
- djgpp
- MS Visual C (ohne .NET)
- C/C++ von Borland

für Win9x, WinNT bis WinXP
"Eingabeaufforderung" (command.com / cmd.exe)
"MS DOS-Modus"



SetConsoleCursorPosition ist Win32-API und steht damit unter jedem
Compiler zur Verfügung, der Win32-Programme übersetzen kann. Das wàren
also mingw, MSVC und Borland C++ für Win32. DJGPP und Borland C++ für
DOS machen kein Win32, aber die haben <conio.h>. Da wirst du wohl eine
Unterscheidung einbauen müssen.

Alternativ nimm eine Bibliothek wie pdcurses, die diese Unterscheidung
für dich berücksichtigt. Dann funktioniert das Programm auch unter Unix.


Stefan

Ähnliche fragen