2009-07-27 2 views
1

Я унаследовал очень старое приложение, которое я сейчас обновляю (я знаю, мы должны были переписать его в VS 2008, но мы купили компанию, а именно, как я застрял с реликвией) , Используя UpdateData (TRUE) для получения изменений, внесенных в элементы управления диалогом, ничего не обновляется. У меня есть элемент управления редактирования с целочисленной переменной и элемент управления редактирования со строковой переменной, назначенный с помощью мастера классов. При нажатии кнопки OK выполняется обновление UpdateData (TRUE) для извлечения новых значений из disalog.DoDataExchange VC++ 6.0

Я, похоже, помню, что у меня была аналогичная проблема, когда VS C++ 6.0 впервые вышел, но не использовал его, поскольку VS 2003 и C# стали распространенными.

Спасибо за любую помощь заранее!

Билл

+0

Опубликовать метод DoDateExchange в классе диалога – peterchen

ответ

0

Вы должны смотреть на содержание метода DoDataExchange и посмотреть, что он делает. Здесь недостаточно информации, чтобы рассказать, что может пойти не так, как это.

1

Проверьте метод DoDataExchange(). Он должен иметь логику для записи данных или чтения из элементов управления. Если программисты использовали реализацию по умолчанию, тогда для каждого элемента управления, который читается/записывается, будет создан макрос DDX _.... Просто посмотрите на любые другие диалоги MFC (в вашем коде или google), чтобы увидеть, как команды DDX должны быть записаны, если они отсутствуют.

В качестве альтернативы, если это всего лишь 1 или 2 значения, вы можете легко получить контроль и прочитать его напрямую, если вы не против делать валидацию и т. Д. Самостоятельно. Получите идентификатор элемента управления от конструктора форм и используйте что-то в соответствии с:

CEditWnd *pWnd = GetDlgItem(ID_THECONTROL); 
CString newValue = pWnd->GetWindowText(); 
...