[c++] Gå till plats i kod när tangent trycks

Permalänk
Medlem

[c++] Gå till plats i kod när tangent trycks

Det jag behöver är helt enkelt att när jag trycker på t ex "esc" knappen på tangentbordet så ska programmet gå till min huvud meny. Man ska kunna trycka på denna knappen när som helst inom programmet.

Jag försökte googla lite på hur man skulle göra men jag hittade inte något som verkade som en bra lösning.

Detta projektet är överkurs för mig just nu så jag skulle behöva lite hjälp med detta;)

Säg bara till om ni vill veta mer om projektet.

Permalänk
Medlem

Skulle säga att du beskriver inte VAD du vill göra.
(Åtminstone inte på ett bra progrmmerings sätt)
Du beskriver HUR du vill göra något.

Beskriv problemet brukar ofta vara lättare om du inte har någon vana
av programmering.

Lite början:
Vilket språk
Vilket OS
Använder du några FrameWork, Grafik libbar et.c.

Permalänk
Medlem

Svårt att svara generellt på eftersom det inte framgår hur ditt program är uppbyggt.

Men principen måste ju vara att du skall "lyssna" efter tangenbordstryckningar. Om du har flera nivåer av fönster borde du skicka vidare händelsen uppåt i hierarkin tills du når toppnivån. Här tar du hand om detta och visar din meny.

Permalänk
Medlem

tack för de snabba svaren

allt är i samma fönster, språket är c++, OS är Windows XP Pro. Jag använder iostream, ctime, fstream, string, ctype.h (ctype.h kan vara kvar från försök av det jag försöker göra nu)
Jag har ännu inte kommit någon vart på hur jag ska bygga upp det.

Som mickeboy sa så behöver programmet "lyssna" efter en knapp tryckning, t ex "esc" tangenten och då när man trycker på esc tangenten så ska den gå till en viss funktion eller en del i en kod, t ex "main();"

Hoppas detta förklarar endel

Permalänk
Medlem

Jag har lyckats på ett sätt nu men man måste kalla på denna funktionen varje gång man ska kunna trycka på esc. Tänkte jag skulle låta er veta det.

void listener() { while (true) { if(_kbhit()) { int key = _getch(); if (key == 27) { exit(0); } else { break; } } } }

Permalänk
Medlem

Du skulle också kunna koda platformsspecifikt och lyssna på windows-events, på så sätt behöver du kanske inte ha en busy-loop som ligger och äter cpu.

http://www.winprog.org/tutorial/ har säkert nått åt dig där.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av toi
Jag har lyckats på ett sätt nu men man måste kalla på denna funktionen varje gång man ska kunna trycka på esc. Tänkte jag skulle låta er veta det.

Du vill nog anropa "Sleep()" eller liknande, annars kommer funktionen använda all tillgänglig processorkraft trots att du inte gör något annat än väntar...

Permalänk
Medlem

.addEventListener på de saker du vill att den ska lyssna efter... Googla på det

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av mrSvamp
.addEventListener på de saker du vill att den ska lyssna efter... Googla på det

Ser inte ut att finnas någon sådan funktion för C++.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem

:/ tror det finns med tillägg... Annars får du göra en sån klass

Permalänk

.addEventListener är väl någonting som finns i Java om jag inte minns fel.

Eftersom det bygger på listeners osv. I c++ (Win32) finns det OnEvent eller vad det nu heter.