001
01.03.2004, 19:16 Uhr
mike
Pinguinhüpfer (Operator)
|
Hi! Probier mal
C++: |
#include <stdio.h> /* … übersetzt unter Linux/UNIX? */ #ifdef __unix__ #include <termios.h> #include <unistd.h>
static struct termios new_io; static struct termios old_io;
/* Funktion schaltet das Terminal in den cbreak-Modus: */ /* Kontrollflag ECHO und ICANON auf 0 setzen */ /* Steuerzeichen: Leseoperation liefert 1 Byte VMIN=1 VTIME=1 */ int cbreak(int fd) { /*Sichern unseres Terminals*/ if((tcgetattr(fd, &old_io)) == -1) return -1; new_io = old_io; /*Wir verändern jetzt die Flags für den cbreak-Modus*/ new_io.c_lflag = new_io.c_lflag & ~(ECHO|ICANON); new_io.c_cc[VMIN] = 1; new_io.c_cc[VTIME]= 0;
/*Jetzt setzen wir den cbreak-Modus*/ if((tcsetattr(fd, TCSAFLUSH, &new_io)) == -1) return -1; return 1; }
int getch() { int c; if(cbreak(STDIN_FILENO) == -1) { printf("Fehler bei der Funktion cbreak......\n"); exit(0); } c = getchar(); /*Alten Terminal-Modus wiederherstellen*/ tcsetattr(STDIN_FILENO, TCSANOW, &old_io); return c; } /* … oder wird das Programm unter MS-Windows übersetzt? */ #elif __WIN32__ || _MSC_VER || __MS_DOS__ #include <conio.h> #endif
int main() { int zeichen; printf("Bitte 'q' drücken, um das Programm zu beenden!\n"); /* Wartet auf das Zeichen q */ while(( zeichen=getch() ) != 'q'); return 0; }
|
Quelle: pronix.de
mfg PS: Ich verschieb dich mal ins C++ Forum, da deine Frage nich MFC spezifisch ist --
Dieser Post wurde am 01.03.2004 um 19:18 Uhr von mike editiert. |