2010-10-07 7 views
0

J'utilise un contrôle CEdit. Et j'ai assigné un gestionnaire d'événement pour le message ON_EN_KILLFOCUS. Il est appelé correctement. Mais le problème est que, quand jamais, je ferme la boîte de dialogue, ce gestionnaire d'événement est appelé quatre fois. Comment puis-je empêcher cela?ON_EN_KILLFOCUS appelé plusieurs fois

Répondre

0

Pourquoi essayer de l'empêcher? Assurez-vous simplement que votre gestionnaire ne tient pas compte de ceux qui ne comptent pas -

+0

ok Jeff. Je pensais que ce n'était pas un comportement normal. Est-ce le même cas pour tous les autres contrôles de l'interface utilisateur? – Krishnan

+1

Eh bien, j'ai eu du mal à prédire quand les commandes seront appelées, donc il vaut mieux être prêt à tout, et ignorer les messages si vous avez besoin de - – Jeff

0

Vous venez de rencontrer un problème similaire et vous avez résolu le problème en séparant les différents gestionnaires.

j'utilisais:

ON_EN_KILLFOCUS(IDE_THRESHOLD, OnKillFocusOnEdit) 
ON_EN_KILLFOCUS(IDE_AUTODENY_THRESHOLD, OnKillFocusOnEdit) 

OnKillFocusOnEdit recevront deux messages à chaque fois que l'une de ces deux modifications perdent le focus.

Maintenant, en changeant à suivre, chaque fonction reçoit un seul message comme prévu:

ON_EN_KILLFOCUS(IDE_THRESHOLD, OnKillFocusOnEdit) 
ON_EN_KILLFOCUS(IDE_AUTODENY_THRESHOLD, OnKillFocusOnAutoDenyEdit) 
Questions connexes