Contourner les touches entrée et echap une boîte de dialogue MFC [Résolu]

Messages postés
47
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
3 mai 2010
- - Dernière réponse : cs_fuliculi
Messages postés
47
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
3 mai 2010
- 10 mars 2006 à 14:07
Bonjour à tous,

j'ai un boite de dialogue ouverte depuis une autre boite de dialogue MFC. J'ai redéfini les fonctions OnOK et OnCancel pour que ma fenêtre ne se ferme pas quand on appuie sur echap ou entrée. J'ai maintenant deux soucis :

- OnCancel ne semble pas être appelée
- Je souhaite signaler aux contrôles (activex flash) que ces touches ont été pressées

J'ai bien essayé m_flash.SendMessage(VK_RETURN); mais c'est sans effet :(

Quelqu'un a une idée?
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
47
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
3 mai 2010
3
Merci
Bon, j'ai fini par trouver :

Au lieu d'intercepter les évènements OnOK et OnCancel, je redéfinie la fonction PreTranslateMessage. J'intercepte les touches Entrée et Echap pour ne pas fermer la fenêtre et je transmets l'évènement à mon contrôle. De plus, le bouton fermer de la fenêtre fonctionne toujours (ce qui n'était pas le cas en redéfinissant OnOK) :

BOOL CtestDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
if (pMsg->wParam == VK_RETURN ||
pMsg->wParam == VK_ESCAPE)
{
m_flash.SendMessage(WM_KEYDOWN, pMsg->wParam, pMsg->lParam);
return TRUE;
}
}

return CDialog::PreTranslateMessage(pMsg);
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 217 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_fuliculi