PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mal wieder C: Auf bestimmte Tastendrücke im Hintergrund warten?


mf_2
2004-02-19, 23:52:50
Hallo,

Wenn ich ein C-Programm habe, das einigermaßen komplex ist und ich möchte dass der User JEDERZEIT per Druck von F1 oder H oder irgendeiner anderen Taste eine Kurzhilfe angezeigt bekommt ( einfach n paar cprintf-Zeilen, nix großartiges ), wie mach ich das? Gibt es irgendwelche Funtkionen o.ä. die im Hintergrund laufen und die amn so einstellen kann, dass sie beim Drcuk einer bestimmten Taste aktiv werden ( eine andere Funktion aufrufen o.ä. )?

Legolas
2004-02-20, 00:54:03
Stichwort Signalhandler. Wie das unter Windows aussieht weiß ich nicht. Wir haben in der Uni nur die dazugehörigen Unix Systemcalls verwendet. Zu diesem Thema müsstest du halt googlen.

mf_2
2004-02-20, 07:33:06
Also sind diese Funktionen systemabhängig?
Weil ich sowas für DOS brauche, aber dann geht die Windows-Funktion nicht, oder?

Xmas
2004-02-20, 13:18:40
Original geschrieben von mf_2
Also sind diese Funktionen systemabhängig?
Weil ich sowas für DOS brauche, aber dann geht die Windows-Funktion nicht, oder?
Natürlich nicht.

Du kannst in DOS den Handler für den Keyboard-Interrupt ersetzen. Aber das ist IMO für dein Problem nicht sonderlich geeignet.

LudiKalell
2004-02-23, 23:23:02
wenn du's in einer Win32 Fensteranwendung (nicht MS-Dos Konsolenanwendung) machen willst, isses einfach: dort kommt jeder Tastendruck in ne Warteschleife und wird abgearbeitet.. mit nem selbstgeschrieben switch Block (gibt's das in C? oder ist das erst bei C++ drin ?) kannst du dann z.B. auf F1 mit ner beiebigen Routine (neues Fenster, bla bla bla) reagieren

ansonsten, wie XMas schon sagte, unter Dos musst du mit Interrupts arbeiten, und das führt dann IMO doch recht nah an Assembler heran..

Xmas
2004-02-24, 03:01:10
Wieso Assembler? Man kann den Interrupt-Handler problemlos in C schreiben. Beim Keyboard-Handler ist es sowieso sinnvoll, dem DOS-Handler die eigentliche Arbeit zu überlassen, sprich innerhalb des eigenen Handlers den zuvor aktiven aufzurufen.