Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Предупреждение при закрытии диалога 
:(
    Опции темы
triclosan
Дата 24.1.2009, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 1
Всего: 12



Требуется запрашивать подтверждение при закрытии дилога. Для этого переопределил метод OnCancel(). Но хотелось бы что бы определять делал ли пользователь изменения в полях диалога (и только в случае внесения данных показывать предупреджение). Поля диалога связаны с переменными путем механихма DDX_Control, как узнать, что значение переменной было обновлено пользователем. Пробовал переопределять UpdateData но этот метод вызывается единыжды при инициализации диалога.
PM MAIL   Вверх
triclosan
Дата 24.1.2009, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 1
Всего: 12



Конечно можно сделать из значений всех полей однустрочку при открытиии диалога а при закрытии проверять не изменилось ли чего, но это как-то не системно
PM MAIL   Вверх
voov
Дата 26.1.2009, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 29.11.2007

Репутация: 8
Всего: 8



Почитай про CPropertyPage и CPropertySheet. Возможно в твоей ситуации будет проще воспользоваться этими классами. Если все же решишь оставить свой вариант, то можно подсмотреть как реализон интересующий тебя вопрос в этих классах.
PM MAIL   Вверх
Earnest
Дата 26.1.2009, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Вариант 1: переопределить OnCmdMsg диалога и ловить соответствующие уведомления - типа EN_CHANGED или CBN_SELENDOK - в зависимости от того, какие у тебя поля используются. И ставить флаг модификации, который потом проверять. 
Вариант 2: завести копию структуры данных, которая заполняется диалогом, и проверять на OnCancel идентичность. Естественно, сначала придется UpdateData (TRUE) вызвать, т.к. по умолчанию на Cancel она не вызывается. А потом, если пользователь не захотел спасать изменения, восстановить данные из запомненной копии.

Нужно понимать, что в приведенных вариантах проверяются разные вещи: делал ли пользователь какие-то действия по изменению данных и действительно ли он данные изменил? В зависимости от задачи нужно выбрать тот или иной вариант. 


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0586 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.