Не знаете, как обновить данные? - PullRequest
2 голосов
/ 24 июня 2011

Язык: C ++

Среда разработки: Microsoft Visual C ++

Используемые библиотеки: MFC

Проблема: Я создал приложение конфигурации предпочтений.Слева находится список со «родительскими» категориями настроек, которые они могут изменить, и когда они щелкают по одной, настройки, которые они могут изменить, появляются справа от списка, как во многих больших диалоговых окнах настроек.( Смотрите скриншот от создателя )

Вот моя проблема.Мне трудно использовать UpdateData, потому что я никогда не вызываю DoModal () для полей предпочтений, потому что они являются дочерними элементами родительского контейнера диалога, и они просто привязаны к элементу управления рисунками в диалоговом окне.Я выполняю комбинацию установки фокуса и отображения / скрытия поддиалогов.

Когда пользователь выбирает «Сохранить эти», им предоставляется другое диалоговое окно, которое позволяет им проверить, какие конкретные предпочтительные области они хотят сохранить (для создания файлов конфигурации XML).Очевидно, мне нужно очистить диалоговое окно для их входных данных, но когда я вызываю UpdateData, меня всегда кричат ​​на вызов UpdateData перед вызовом DoModal ().

Теперь я не совсем уверен, как поступить с получениемценности.Это также не помогает, что я очень плохо знаком с MFC.Вот и все.В любом случае, я был бы признателен за любую помощь, которую может предложить каждый.

~ Jon

1 Ответ

2 голосов
/ 26 июня 2011

Вам не нужно вызывать DoModal (), чтобы использовать UpdateData ().Я не уверен, что вы подразумеваете под "кричал".Чтобы использовать UpdateData (), вам нужно использовать DDX (см. Также код проекта статьи ).Из вашего вопроса не ясно, используете ли вы DDX, связывая управляющие идентификаторы dlg с членами данных.

В вашем сценарии вам, вероятно, потребуется вызвать UpdateData (), когда вы отойдете от определенного диалога, чтобы сохранить значения на экране для элементов данных.

Возможной альтернативой, которую вы можете рассмотреть, является использование CTreePropSheet , древовидного элемента управления, основанного на CPropertySheet.Вы также можете воспользоваться Google CTreePropertySheet, чтобы найти больше реализаций древовидного элемента управления для диалогов.

...