Изменение значения CString после вызова UpdateData (TRUE) - PullRequest
0 голосов
/ 25 марта 2011

У меня есть приложение, в котором у меня есть поле ввода.Это поле редактирования позволяет пользователям вводить любые символы длиной до 20 символов.

Теперь я написал функцию обработки изменения, измененного для события

ON_EN_CHANGE

void CDlgFloatingEdit::OnEditChanged() {    UpdateData(TRUE); }

Теперь, когда я ввожу текстовое значение из 20 символов, когда я отлаживаю, я обнаруживаю, что до тех пор, пока в этой функции не будет вызвано UpdateData (TRUE), значение CString будет сохранено должным образом, а когда UpdateData (TRUE) будет вызываться как значениеполучает значение NULL.

Еще одно наблюдение, когда я вводю все символы как 4, тогда оно работает правильно.Но когда я вводю все символы как 1, тогда значение устанавливается в NULL.

Я не понимаю, почему это должно произойти.

1 Ответ

2 голосов
/ 25 марта 2011

UpdateData всегда копирует данные из элементов управления в элементы данных диалога, что является его функцией.Он немедленно применяет любые проверки данных DDV, включая ограничение в 20 символов на поле.Если проверка не пройдена, она должна отобразить ошибку, но даже если это не так, она может очистить элемент данных CString.

...