Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Проблемка с CDialog (MFC)

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Eugeny



Зарегистрирован: 01.02.2005
Сообщения: 40

СообщениеДобавлено: Чт Фев 02 2006 11:21    Заголовок сообщения: Проблемка с CDialog (MFC) Ответить с цитатой

Как предотвратить закрытие окна диалога, производного от CDialog (MFC) при нажатии Enter'a. Создаю приложение главным окном которого является диалоговое окно, естественно мне не нужно чтобы по Enter'у оно закрывалось.

Пробовал в методе InitInstance сменить способ создания и вывода диалога с DoModal() на Create() и ShowWindow().
Не помогло...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
September



Зарегистрирован: 14.11.2004
Сообщения: 109
Откуда: Saint-Petersburg

СообщениеДобавлено: Чт Фев 02 2006 12:27    Заголовок сообщения: Ответить с цитатой

На сколько я помню, по умолчанию вы получаете фокус на кнопку "ОК", следовательно нажатие Ентера влечет за собой обработку кнопки "ОК".
Варианты - либо меняем фокус, либо глушим обработку MB_OK своим кодом. Могу ошибаться, Вижал запускал последний раз больше года назад 8((
_________________
Соре за громотишескее ашипки
Вернуться к началу
Посмотреть профиль Отправить личное сообщение AIM Address Yahoo Messenger MSN Messenger
kolobok0



Зарегистрирован: 22.04.2005
Сообщения: 253
Откуда: Мсква

СообщениеДобавлено: Чт Фев 02 2006 17:44    Заголовок сообщения: Re: Проблемка с CDialog (MFC) Ответить с цитатой

Eugeny писал(а):
Как предотвратить закрытие окна диалога, производного от CDialog (MFC) при нажатии Enter'a. Создаю приложение главным окном которого является диалоговое окно, естественно мне не нужно чтобы по Enter'у оно закрывалось.

Пробовал в методе InitInstance сменить способ создания и вывода диалога с DoModal() на Create() и ShowWindow().
Не помогло...


По дороге путешествия сигнальчика типа OnClose ставите в визарде обработчик и НЕ вызываете у базового соответствующий метод...

Например на клавише окей нажатый ентер - вызовет обработчик OnOK. Дык в нём не нужно вызывать базовый.

Как тут уже прозвучало - не всегда фокус ввода будет на той или иной кнопке. Посему приведённый выше пример - лишь пример прохождения события. А не руководство к действию.

с уважением
(круглый)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Eugeny



Зарегистрирован: 01.02.2005
Сообщения: 40

СообщениеДобавлено: Вт Фев 07 2006 14:31    Заголовок сообщения: Ответить с цитатой

Даже если в диалоге нет ни одиной кнопки и в методе OnClose не вызывать базовый CDialog::OnClose() все равно закрывается по Ентеру
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DmitryShm



Зарегистрирован: 17.11.2003
Сообщения: 211
Откуда: Казань

СообщениеДобавлено: Вт Фев 07 2006 18:40    Заголовок сообщения: OkButton Ответить с цитатой

Idea Arrow Есть такая вещь, как DialogResult. Кнопка Ok по дефолту на форме -- это OkButton. Т.е. по ее нажатию у DialogResult будет Ok. Есть также по дефолту кнопка Cancel. При ее нажатии у формы задается CancelResult. При установке Result формы она закрывается. Кнопка OkButton всегда будет в фокусе на форме. Это логика такая. Idea Если хотите изменить логику, то просто уберите все OkButton-ы с формы. Создайте новую унопку вместо уничтоженной OkButton, либо снимите соответствующее свойство с кнопки Ok, делающее ее OkButton.
_________________
love IT
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Eugeny



Зарегистрирован: 01.02.2005
Сообщения: 40

СообщениеДобавлено: Ср Фев 08 2006 08:16    Заголовок сообщения: Ответить с цитатой

А ларчик просто открывался Very Happy
Даже если в диалоге нет ни одной кнопки, ID_OK и ID_CANCEL все равно есть (так по всей видимости устроен класс).
Действительно если в обработчике OnOK не вызывать базовый то диалог не закрывается!!!

Большое спасибо kolobok0, он мне сразу дело подсказал, я просто не въехал вначале
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...