![]() |
|
|
![]()
|
|
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 1 Всего: 12 |
Требуется запрашивать подтверждение при закрытии дилога. Для этого переопределил метод OnCancel(). Но хотелось бы что бы определять делал ли пользователь изменения в полях диалога (и только в случае внесения данных показывать предупреджение). Поля диалога связаны с переменными путем механихма DDX_Control, как узнать, что значение переменной было обновлено пользователем. Пробовал переопределять UpdateData но этот метод вызывается единыжды при инициализации диалога.
|
|||
|
||||
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 1 Всего: 12 |
Конечно можно сделать из значений всех полей однустрочку при открытиии диалога а при закрытии проверять не изменилось ли чего, но это как-то не системно
|
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
Почитай про CPropertyPage и CPropertySheet. Возможно в твоей ситуации будет проще воспользоваться этими классами. Если все же решишь оставить свой вариант, то можно подсмотреть как реализон интересующий тебя вопрос в этих классах.
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Вариант 1: переопределить OnCmdMsg диалога и ловить соответствующие уведомления - типа EN_CHANGED или CBN_SELENDOK - в зависимости от того, какие у тебя поля используются. И ставить флаг модификации, который потом проверять.
Вариант 2: завести копию структуры данных, которая заполняется диалогом, и проверять на OnCancel идентичность. Естественно, сначала придется UpdateData (TRUE) вызвать, т.к. по умолчанию на Cancel она не вызывается. А потом, если пользователь не захотел спасать изменения, восстановить данные из запомненной копии. Нужно понимать, что в приведенных вариантах проверяются разные вещи: делал ли пользователь какие-то действия по изменению данных и действительно ли он данные изменил? В зависимости от задачи нужно выбрать тот или иной вариант. -------------------- ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |