ON_EN_KILLFOCUS вызывается несколько раз

Я использую контроль CEdit. И я назначил обработчик событий для сообщения ON_EN_KILLFOCUS. Он вызывается правильно. Но проблема в том, что когда я закрываю диалоговое окно, этот обработчик событий вызывается четыре раза. Как я могу предотвратить это?

2 ответа

Решение

Зачем пытаться это предотвратить? Просто убедитесь, что ваш обработчик игнорирует те, которые не имеют значения -

Просто столкнулся с подобной проблемой и решил путем разделения на разные обработчики.

Я использовал:

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

OnKillFocusOnEdit будет получать два сообщения каждый раз, когда любое из этих двух правок потеряет фокус.

Теперь, перейдя к следующему, каждая функция получает только одно сообщение, как и ожидалось:

ON_EN_KILLFOCUS(IDE_THRESHOLD, OnKillFocusOnEdit)
ON_EN_KILLFOCUS(IDE_AUTODENY_THRESHOLD, OnKillFocusOnAutoDenyEdit)
Другие вопросы по тегам