Contourner les touches entrée et echap une boîte de dialogue MFC

Résolu
cs_fuliculi Messages postés 43 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 3 mai 2010 - 10 mars 2006 à 13:38
cs_fuliculi Messages postés 43 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?

1 réponse

cs_fuliculi Messages postés 43 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 3 mai 2010 6
10 mars 2006 à 14:07
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);
}
3
Rejoignez-nous