![]() |
|
|
![]()
|
|
| devmstr |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 28.4.2004 Где: Ukraine Репутация: нет Всего: 11 |
Я новичок в MFC.
Цель программы следующая. Главное окно содержит меню. Из него вызывается диалоговое окно, содержащее Edit и кнопку. При закрытии окна данной кнопкой значение поля Edit должно стать Caption главной формы. Вызов диалога:
Кнопка просто закрывает окно посылая WM_CLOSE Сейчас приложении работает так. После вызова диалога и работой с Edit, если надать Enter окно закрывается. И Caption меняется. Но почему оно закрывается. Кнопка здесь не причем. Я специально отключал кнопку. Все равно по Enter диалог закрывается. Если закрыть диалог используя кнопку, то Caption не меняется. Как я понимаю синхронизация переменной и значения Edit происходит при вызове void CDlg::DoDataExchange(CDataExchange* pDX). Так при нажатии Enter он вызывается, а при нажатии на кнопке нет. Когда вообще DoDataExchange должно вызыватся? Нужно ли его вызывать вручную? Сейчас решил проблему вызывая UpdateData(true); при закрытии окна. Правильно ли я сделал? Полный код программы: Code -------------------- Think different ©Steve Jobs ![]() |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Таково поведение диалога по умолчанию. По Enter вызывается default-обработчик, а по умолчанию это OnOk. А кнопка у тебя какой идентификатор имеет? Чтобы было как ты хочешь, нужно присвоить стандартный ид-р IDOK. Каждая кнопка (точнее ее идентификатор) - это команда. Команде нужен обработчик. Есть 2 стандартных обработчика, которые действуют по умолчанию OnOk и OnCancel, для кнопок IDOK и IDCANCEL, соответственно. Все остальное надо писать самому. -------------------- ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |