Clavier téléphonique

Signaler
Messages postés
34
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
28 juillet 2005
-
Messages postés
34
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
28 juillet 2005
-
Bonjour à tous,

j'ai besoin de réaliser une interface d'un clavier téléphonique en visual c++.

Donc, j'ai fait mon interface mais j'ai un petit problème: c'est
comment dire à mon application que quand on clique deux fois de suite
sur le même numero, c'est autre chose qui doit s'afficher.

Je m'explique: quand je clique deux fois sur la touche 2 on affiche A.( Le rôle du clavier d'un téléphone).

Est ce que quelqu'un pourrait me donner une indée svp?

Merci d'avance pour votre aide,

Hanane.

9 réponses

Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Bé tu crées une variable int DernierClik qui contiendra le dernier numéro clické, et un teste lors du nouveau click,
if(NouveauCick == DernierClick)
{
ValeurClick = Ce que tu veux :) lol
}
Il doit avoir mieu, cet exemple ne prend pas en compte le temps entre chaque click...


void Aurevoir( void ); //Bonne journée
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Pour le temps entre chaque clic, faire un timer de n ms. Si une bouton
est choisi avant la fin du timer, on reset le timer, sinon (le timer
est terminé) on valide la touche actuelle.
Messages postés
34
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
28 juillet 2005

Oui, justement j'ai pensé à cette solution. mais comme tu as dit, ca ne gère pas le temps entre chaque click.

J'ai essayé de faire ça avec des timers mais comme c'est la première
fois que je travaille avec cette notion, j'ai pas reussi. Si quelqu'un
peut m'expliquer comment ca marche.

Merci,

Hanane
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Tu utilises SetTimer. Tu as 2 possibilités: soit donner une TIMERPROC
(4e param), dans ce cas cette fonction sera appelée à intervalle
régulier (une seule fois pour nous), soit tu donnes pas et dans ce cas
tu dois fournir une HWND qui recevra un WM_TIMER dans sa WndProc. C'est
le 3e paramètre qui te permet de fixer le temps à attendre
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013

Cette solution ne serait-elle pas plus simple que de mettre en oeuvre un timer qui envoi des evènement ? (je ne suis pas vraiment au point sur ce qui est preferable de faire)

//Mise à zero du timer
long Timer = GetTickCount(); //Nombre de milliseconde ecoulées depuis le
//démarrage du pc

//Verifier si le temps est dépassé, X = nombres de millisecondes pendant lesquel
//le timer sera actif
if( (Timer + X) < GetTickCount() )
{
//timer actif
if(NouveauCick == DernierClick)
{
ValeurClick = "Ce que tu veux :) lol" ;
}
}
else
{
//timer inactif
Timer = GetTickCount();
}

J'ai repris le code de Joky concernant la detection du nouveau clique
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013

Lol désoler d'avoir colorer seulement la moitier du code, je suis pas très bien reveillé !
Messages postés
34
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
28 juillet 2005

Resalut tout le monde,

merci à vous tous pour vos réponse.

Pour la derniere proposition, comment on reccupere X = nombres de
millisecondes pendant lesquel le timer sera actif? je dois creer un
timer?

merci,

hanane
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013

LoL
exemple :
j'appuis sur la touche 2 pour obtenir un A et je veux obtenir un deuxieme A, je dois donc attendre un certain temps afin de passer au second au lieu que ca modifie mon A deja taper. Ce temps c'est ton X.

Donc si tu veux que que pour avoir un B il faut appuyer 3 sur sur la touche 1 et que chacune de ces pressions doit se faire avec maximum 2 secondes d'intervalle, alors
X = 2000
Pour finir, X est l'equivalent de l'intervalle d'un timer classique
Le travail c'est la santé, ne rien faire c'est la préservé !!!
Messages postés
34
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
28 juillet 2005

Ok, je crois que j'ai compris. Je vais essayer de faire ca.

Merci encore une fois.

Hanane