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)