Я не уверен, почему это происходит, хотя в некоторых элементах управления MFC есть некоторые проблемы. Обходной путь может заключаться в определении глобального bool, изначально ложного, и если функция вызывается, вы устанавливаете его в true. Перед тем, как установить глобальное значение в true, вы можете проверить его значение, а если его true, установить в false и вернуть функцию. Обычно это происходит для изменения функций, связанных с элементами управления.