|
| idle loop i konsol app. Fra : Gonex |
Dato : 31-07-02 22:09 |
|
Jeg er ved at lave en konsol applikation. Programmet har en idle loop som
skal ligge og lave en et eller andet i hvert "runde". Men samtidig skal jeg
checke for input til programmet, fx et tryk på escape for at afslutte. Hvis
jeg havde en brugerflade (og mit OS er Windows) ville jeg lave noget
lignende:
BOOL fDone = FALSE;
MSG msg;
while (!fDone)
{
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if(msg.message == WM_KEYDOWN)
{
//Gør noget. Evt. afslutte programmet.
fDone = TRUE;
}
}
//gør et eller andet hver gang løkken køre.
}
Problemet er at efter som det er en konsol applikation virker det ikke. (Med
mindre jeg har dummet mig på en anden måde).
Hvis jeg evt. prøver at lave noget med fx getchar(), getch(), cin. Osv.
stopper det løkken og venter på input.
Er der nogen der har et forslag til hvordan jeg kan løse problem med at køre
en løkke, og samtidig checke input på en elegant måde. Den eneste løsning
jeg lige i øjeblikket kan se er noget med nogle tråde hvor den ene tråd
kontrollerer input mens den anden tråd ligger og "løkker" og køre
programmet. Men det må da kunne laves smartere, jeg har på fornemmelsen der
er et eller andet simpelt jeg har overset.
Mvh. Mikael.
| |
Martin Dyring (31-07-2002)
| Kommentar Fra : Martin Dyring |
Dato : 31-07-02 23:10 |
|
"Gonex" <nospam@for.me> wrote in message
news:3d4851f8$0$1254$edfadb0f@dspool01.news.tele.dk...
> Er der nogen der har et forslag til hvordan jeg kan løse problem med at
køre
> en løkke, og samtidig checke input på en elegant måde. Den eneste løsning
> jeg lige i øjeblikket kan se er noget med nogle tråde hvor den ene tråd
> kontrollerer input mens den anden tråd ligger og "løkker" og køre
> programmet. Men det må da kunne laves smartere, jeg har på fornemmelsen
der
> er et eller andet simpelt jeg har overset.
Hej Michael,
Tråde er nok - alt afhængig af problemets kompleksitet - den pæneste løsning
på dit problem, men hvis du helt vil undgå det kan du tage et kig på
kbhit().
--
Mvh,
Martin Dyring
| |
Gonex (01-08-2002)
| Kommentar Fra : Gonex |
Dato : 01-08-02 10:46 |
|
> Tråde er nok - alt afhængig af problemets kompleksitet - den pæneste
løsning
> på dit problem, men hvis du helt vil undgå det kan du tage et kig på
> kbhit().
kbhit() er lige præcis sådan en funktion jeg ledte efter. En måde at
kontrollerer for input uden at stoppe eksekvering af programmet. Hvor kunne
den da have gjort livet lettere for mig mange gange gennem tiden, jeg har
desværre aldrig kendt til funktionens eksistens. Takker mange gange.
| |
|
|