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

Signaler
Messages postés
43
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
3 mai 2010
-
Messages postés
43
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
3 mai 2010
-
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?

1 réponse

Messages postés
43
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
3 mai 2010

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);
}