PDA

View Full Version : [C++] Mostrare a schermo tutti i tasti premuti


MrModd
10-10-2008, 13:05
Salve gente!!!
Nuovo quesito per voi:
Dato che spesso mi serve sapere il codice decimale dei tasti (es freccette), mi volevo fare un programma che leggesse ciò che premo e lo mostra a schermo.
Tra l'altro ne approfitto per testare il compilatore della Borland scaricato ieri in versione trial dal sito.
Questo è ciò a cui ho pensato:

#include <iostream>
#include <conio.h>

using namespace std;

int main ()
{
char a;
while (1==1)
{
clrscr();
cout << " Analizzatore codici tasti" << endl << endl;
cout << "Premere un tasto per visualizzarne il codice decimale" << endl << endl;
cout << "Tasto: " << a << endl;
cout << " " << (int)a << endl;
a=getch();
}
}

Solo che se premo alcuni tasti come frecce o gli Fx mi da valori diversi:
ad esempio premendo su mi compare H (codice decimale 72).
Si può rimediare? Inoltre mi piacerebbe leggere anche i tasti come shift o control.

71104
10-10-2008, 15:01
#include <iostream>
#include <conio.h>

...
clrscr();
che schifo!!! ecco perché odio la Borland: nel 2008 ancora funziona questa cosa oscena.

perché invece di testare il compilatore della Borland non testi quello della Microsoft? :asd:

togli quell'#include <conio.h> e usa invece queste API per gestire la console:
http://msdn.microsoft.com/en-us/library/ms682073(VS.85).aspx

71104
10-10-2008, 15:04
pagina di aiuto per il clear screen:
http://support.microsoft.com/kb/99261

ora cerco qualcosa per l'altro problema, quello del codice numerico dei tasti premuti (immagino che ti vada bene il virtual key code).

71104
10-10-2008, 15:19
ecco qua:
http://msdn.microsoft.com/en-us/library/ms684199(VS.85).aspx

in particolare penso che questa API sia sufficiente:
http://msdn.microsoft.com/en-us/library/ms684961(VS.85).aspx

MrModd
10-10-2008, 16:10
Ehm a dire il vero io uso clrscr() per non usare system("cls")...
@71104: Come la richiamo la funzione? Devo aggiungere degli header?

71104
10-10-2008, 16:21
Ehm a dire il vero io uso clrscr() per non usare system("cls")... ci crederesti che era financo meglio system("cls")? :D
system("cls") rispetto a clrscr() ha il vantaggio di funzionare su qualsiasi compilatore C per Windows.

comunque a dire il vero non piace neanche a me; fosse per me ricopierei il codice dell'altro esempio.


@71104: Come la richiamo la funzione? Devo aggiungere degli header? in MSDN la stragrande maggioranza di ciò che è documentato include in fondo alla documentazione anche i requisiti; nel caso delle funzioni Win32 i requisiti includono headers e librerie necessari. comunque per moltissime API è sufficiente includere windows.h.

MrModd
10-10-2008, 16:39
ci crederesti che era financo meglio system("cls")? :D
system("cls") rispetto a clrscr() ha il vantaggio di funzionare su qualsiasi compilatore C per Windows.

comunque a dire il vero non piace neanche a me; fosse per me ricopierei il codice dell'altro esempio.


in MSDN la stragrande maggioranza di ciò che è documentato include in fondo alla documentazione anche i requisiti; nel caso delle funzioni Win32 i requisiti includono headers e librerie necessari. comunque per moltissime API è sufficiente includere windows.h.

Uhm sono abbastanza impedito... Non mi funziona: mi da un errore nella compilazione.
Ma il compilatore della Ms di cui parlavi è il Visual C++?

71104
10-10-2008, 20:46
Uhm sono abbastanza impedito... Non mi funziona: mi da un errore nella compilazione. embè, quale?


Ma il compilatore della Ms di cui parlavi è il Visual C++? ... diciamo di si.
(che i miei lettori e miei fans :asd: mi perdonino, per una volta voglio farla semplice).

esiste una versione gratuita di Visual C++, l'edizione Express, che si scarica da qua:
http://www.microsoft.com/express/download/
purtroppo è molto limitata rispetto ad altre edizioni come la Standard e la Professional, ma anche così da' filo da torcere ai concorrenti.

MrModd
11-10-2008, 11:25
embè, quale?
Non so cosa ci va come argomento della funzione.

esiste una versione gratuita di Visual C++, l'edizione Express,
Io l'ho già scaricata la express. Non sapevo ce ne fossero altre di versioni. In effetti mi puzzava un po' che Microsoft avesse rilasciato un software completamente gratuito :sofico: