Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Глюк со вкладкой


Автор: tokaplan 19.5.2002, 16:21
У меня есть прога на базе окна диалога. Состоит она из вкладок, т.е. на главном окне диалога еще есть много вкладок, которые по сути тоже диалоги, только со стилем, отключающим рамку и со стилем WS_CHILD. Так вот, все сообщения вкладка обрабатывает нормально, но, если фокус ввода, к примеру, принадлежит EDITBOX'у, расположенному на ней, и пользователь нажимает ENTER, то сообщение обрабатывается вкладкой (или кем?) так, что вкладка... исчезает! Остается её заголовок (т.е. то, на что надо жать, чтобы перейти на нее), а само содержимое вкладки исчезает. Что делать?
P.S. Вкладку представляет класс CTabCtrl из MFC

Автор: keisik 20.5.2002, 10:30
Если вкладки - диалоги, то по нажатию на Enter вызывается сиандартная ф-ия CDialog::OnOK(), которая закрывает окно. То же самое для Escape - CDialog::OnCancel(). Их нужно заглушить и всё будет пучком.

Автор: tokaplan 20.5.2002, 19:58
Но на вкладке нет кнопок ОК и Cancel! Честно говоря, на ней вообще нет кнопок. Кстати, как определить, на какие кнопки будут "жать" ENTER и ESCAPE?
Может быть, необходимо сделать обработчики для кнопок, которых нет???

Автор: keisik 21.5.2002, 10:13
CDialog::OnOK() и OnCancel() не есть обработчики, это функции-члены класса CDialog, и вызываются при нажатии на Enter и Cancel соответственно, вне зависимости от наличия или отсутствия соответствующих кнопок. Если же у тебя на диалоге будут кнопки с идентификаторами IDOK и IDCANCEL, то для них будут созданы соответствующие обработчики, включающие в себя и эти самые функции из CDialog.
Вот.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)