2009-06-16 8 views

Répondre

2

Il existe différentes manières de procéder. Vous pouvez:

  1. Créer un gestionnaire OnCancel et faire ce que vous voulez avec la notification Annuler
  2. Vous pouvez gérer OnClose événement et faire ce que vous voulez.
  3. Vous pouvez remplacer PreTranslateMessage et vérifier la touche Echap ici et faire ce que vous voulez.

Vérifiez this pour des exemples de code.

Pour un exemple PreTranslateMessage, voir this

+0

OnClose (le gestionnaire désigné de WM_CLOSE) n'est pas appelé par la touche Echap. –

4

Vous pouvez remplacer l'événement OnCancel et seulement aller de l'avant avec l'appel OnCancel si IDCANCEL est l'élément ciblé.

void CMyDialog::OnCancel(void) 
{ 
    if(GetDlgItem(IDCANCEL) == GetFocus()) 
    { 
     CDialog::OnCancel(); 
     return; 
    } 
} 
1

Remplacer OnCancel et ne le font pas appel la mise en œuvre de la classe de base. Ne pas s'approcher de OnClose à moins de savoir ce que vous faites, vous risquez de casser le comportement de Alt-F4 et du bouton X.

Je l'ai toujours considéré PreTranslateMessage pour des choses comme ce que l'utilisation d'une arme thermonucléaire pour casser une noix, mais si elle flotte votre bateau ...

Questions connexes