dambeaufort
Messages postés60Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention17 septembre 2004
-
2 mars 2004 à 09:57
dambeaufort
Messages postés60Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention17 septembre 2004
-
3 mars 2004 à 10:15
bonjour a tous,
j'ai regarder les messages deja preent dans le forum mais je n'arrive pas a efectuer la chose suivante:
J'aimerais sous une application mfc avoir une boucle du type:
while (i>0) {if (touche 'Y' enfoncee) {i=i-1}}
explication: une fois entrer dans la boucle, je veux gerer un deplacement que lorsque une touche est enfoncee. Si la touche est relachee, le deplacement se met en pause jusqu'a un nouvelle appui sur la touche en qst.
c donc tout simple mais je n'arrive pas a gerer le clavier dans mon application mfc
Pourriez vous m'aider.
dambeaufort
Messages postés60Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention17 septembre 2004 2 mars 2004 à 14:33
ok je te remercie, ta solutions est excellente. Seul petit probleme ou plutot interrogation, est il possible de faire la meme chose suivant tel ou tel touche de clavier enfonce.
ex actuellement le message"message" s'affiche lorsque je j'appui sur une touche quelquonque. est il possible de limiter son affichage que lorsque la touche entree est pressé?
dambeaufort
Messages postés60Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention17 septembre 2004 2 mars 2004 à 15:37
ok je vais tester.
Reste un hic, si tu pouvais m'aider.....
ta fonction me pêrmet de voir lorsque une touche du clavier est enfonce, c ok. mais comment l'inserer dans ma structure qu e j'ai definis ci dessus.
Une fois dans le while, je ne voit pas comment tester en continu si un bouton du clavier est enfonce......
PunkDude424
Messages postés117Date d'inscriptionmardi 3 février 2004StatutMembreDernière intervention24 avril 2006 2 mars 2004 à 16:13
tu te mets un variable dans ta classe.....par exemple m_KeyPressed....et quand tu rentre dans pretranslatemessage et dans WM_KEYDOWN tu mets la varaible a true par exemple et quand tu va dans WM_KEYUP tu mets la variable a false.....alors dans ta fonction tu mets ta boucle en mettant
//fct de lancement de procedure
void CAppliDlg::Onlancer()
{
char cconsignebarre;
long consignebarre;
int Pas=1; int gap;
if (m_mob ) {consignebarre=m_consignebarre.GetPos();
gap=consignebarre;
while (m_clavierok==TRUE)
{while (gap>0.01)
{Sleep(500);
m_progress.SetPos(consignebarre-gap);
ltoa(consignebarre-gap,&cconsignebarre,10);
m_consigne.ReplaceSel(&cconsignebarre);
gap=gap-Pas;m_clavierok=FALSE;}
}
}
else {m_consigne.ReplaceSel("no ");}
}
Le probleme c que ca marche mais je voudrais une confirmation que le bouton del est enfoncee a chaque pas.
Pour l'instant les pas ce deroule que si j'ai enfonce le bouton del initialement. si je le relache j'aimerais que l'evolution des pas s'arrete.
dambeaufort
Messages postés60Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention17 septembre 2004 2 mars 2004 à 17:08
oui mais ce que je veux dire c que une fois que tu as lancer le "mouvement" donc que tu es entrer dans la boucle du while(gap>0.01), le changement d'etat du bouton DEL ne fera rien a l'execution du mouvement.
Ce que je voudrais c que le mouvement s'arrete des que le bouton est relache.
dambeaufort
Messages postés60Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention17 septembre 2004 3 mars 2004 à 10:15
ca doit venir de moi mais je n'y arrive pas du tout. Le probleme que g c que lorsque je met mon sleep dans ma boucle while les pressions sur la touche del sont toujours enregistrer et donc quand je decide de m'arreter en relachant la touche, il faut attendre quelques pas pour que l'evolution s'arrete. Pourrais tu me reeecrire la fonction comme tu la voit toi?
merci