PDA

Visualizza la versione completa : [C++] tasti funzione


djpeppe
04-06-2007, 17:42
ciao
vorrei che nel mio programma a consolle premendo F1 la combinazione dei colori delle scritte e dello sfodo cambi.
ho già creato la funzione che randomizza i colori e so come metterla nel programma.
ma come faccio a fare in modo che ogni volta che premo F1 succede questo? devo implementare il codice in ogni punto fisso (intendo dove il programma si ferma cioè scanf o system("pause")) ??

djpeppe
04-06-2007, 21:44
mi sento ignorato, escluso e dimenticato :(

bigmickey
05-06-2007, 11:38
Proprio F1! :dhò:

Sinceramente non mi sono mai posto il problema.
Però tra le API di windows ci sono funzioni che permettono di rilevare la pressione dei tasti.
Prova a vedere qualcosa di questo tipo.

SHORT GetAsyncKeyState(
int vKey
);

a te interessa vKey=VK_F1=70

djpeppe
05-06-2007, 13:48
ah? come? non ho capito una mazza
per rilevare quando viene premuto F1 lo so fare, ma non so se devo implementare quel pezzo di codice ogni volta. dico f1 per esempio perchè in effetti io voglio attribuire un comando ad ogni tasto funzione. per farlo ho creato una funzione che è bella lunga perciò vorrei fare a meno di implementarla per 20-30 volte nel programma.


p.s. io delle api non ci ho capito niente, sono più o meno come i file .h? dove posso studiarmi (a dovere) qualcosa a riguado? consiglitemi voi, anke qualche libro se è necessario.

bigmickey
05-06-2007, 14:11
Allora procediamo con calma... mettiamo da parte l' API per il momento.
Come fai a rilevare il tasto F1 ?



come faccio a fare in modo che ogni volta che premo F1 succede questo? devo implementare il codice in ogni punto fisso (intendo dove il programma si ferma cioè scanf o system("pause")) ??


fai vedere un pò di codice , altrimenti non ti so aiutare

djpeppe
05-06-2007, 14:57
while ( (scelta=getch()-'0')!=0 ){ \\input dalla tastiera

switch (scelta){
case 1:
...
case 2:
...
case 3:
...
default:
ctrl=fs(scelta, color);

questo è il menù:
se si preme 1 fa una cosa se si preme 2 un altra ecc..
nel default ci sono sia i casi dei tasti funzione sia quandoi si sbaglia a digitare.
la funzione "fs" serve proprio per i tasti funzione(ignora il secondo parametro)
è costituita + o meno così:


ret +='0';
ret += 256;
switch(ret){ \\"ret" nel caso sopra descritto è "scelta"

case 315: //qui vale F1
colore(color);
system(color);
coso=1;
break;
case 316: //qui vale f2
....

tutto funziona perfettamente.
solo che ho un bel pò di menu e quindi vorreri fare a meno di usare questa funzione ogni volta, chiaro?

bigmickey
05-06-2007, 16:17
Originariamente inviato da djpeppe
ciao
vorrei che nel mio programma a consolle premendo F1 la combinazione dei colori delle scritte e dello sfodo cambi.
ho già creato la funzione che randomizza i colori e so come metterla nel programma.
ma come faccio a fare in modo che ogni volta che premo F1 succede questo? devo implementare il codice in ogni punto fisso (intendo dove il programma si ferma cioè scanf o system("pause")) ??

Nel tuo codice non vedo nè system("pause") nè scanf,
non riesco a seguirti.

L' unica cosa che mi viene in mente guardando il tuo codice,
è che potresti richiamare la funzione (che dici di aver scritto)
nel case giusto.

djpeppe
05-06-2007, 18:13
allora ripartiamo:

hai presente word? in qualunque punto del programma se premi F1 si avvia l'aiuto.
nella mia applicazione se quella funzione non è preesente in quel determinmato punto F1 non fa niente

come faccio a fare che in qualsiasi punto faccia quello che voglio io????

ok???

bigmickey
05-06-2007, 18:39
Ahia credo di aver capito... tu vuoi che in qualsiasi menu ti trovi,
la pressione di F1 faccia una determinata cosa sempre.

Non mi vengono in mente soluzioni semplici se non quello di creare un Thread
che controlli che non sia stato premuto F1 , ritorniamo alla funzione GetAsyncKeyState
di cui ti ho accennato. Mi spiace ma soluzioni più semplici non me ne vengono.

Loading