Никак не могу удержать на экране Dialog
От: Линник В.Ю Россия  
Дата: 04.03.03 09:41
Оценка:
Приветствую!
Работаю над программой отображения записей их БД, необходимо наличие нескольких окон. Решил сделать так: визардом создал SDI приложение с поддержкой Doc/View. Стандартный View оставил пустым и создал несколько окон производных от CDialog. И вызываю их с панели инструментов вот так:

void CMyView::ShowPage(Pages page2open) //где Pages — названия окошек, хранятся в enum'е
{

if(dlgFormBase.m_hWnd == NULL)
dlgFormBase.Create(IDD_FORM_BASE, this);

if(dlgSetData.m_hWnd == NULL)
dlgSetData.Create(IDD_FORM_SETDATA, this);

dlgFormBase.ShowWindow(false);
dlgSetData.ShowWindow(false);

switch (page2open)
{
case FormBase :
dlgFormBase.ShowWindow(true);
break;
case SetData :
dlgSetData.ShowWindow(true);
break;
default :
dlgSetData.ShowWindow(true);
}
}

Окошки прекрасно гасятся и открываются сызнова, но вот если я жму Enter — прячутся. Да, они снова появляются если я их вызову нажатием кнопки на панели инструментов, но этот Enter, я, простите, не планировал... Пытался обрабатывать события KEYDOWN, KILLFOCUS — не помогает....Поможете? Буду благодарен....Владимир.
Re: Никак не могу удержать на экране Dialog
От: small_cat Россия  
Дата: 04.03.03 09:45
Оценка:
Переопредели обработчик OnOK. Щелкни, т.е. два раза по кнопке ОК и убей все содержимое появившейся функции.
- Простите, профессор, не пса, а когда он уже был человеком.
— То-есть он говорил? Это еще не значит быть человеком. (с) Булгаков
Re[2]: Никак не могу удержать на экране Dialog
От: Аноним  
Дата: 04.03.03 10:11
Оценка:
Здравствуйте, small_cat, Вы писали:

SC>Переопредели обработчик OnOK. Щелкни, т.е. два раза по кнопке ОК и убей все содержимое появившейся функции.


Это понятно, я сделал это наипервейшим делом. Но у меня в окне куча контролов (EditDox, ListBox, ComboBox...) В любом из них нажатие Enter гасит окно. Что делать в этом случае? В любом случае — спасибо за ответ!))))
Re[3]: Никак не могу удержать на экране Dialog
От: Serguei666 Беларусь  
Дата: 05.03.03 16:53
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, small_cat, Вы писали:


SC>>Переопредели обработчик OnOK. Щелкни, т.е. два раза по кнопке ОК и убей все содержимое появившейся функции.


А>Это понятно, я сделал это наипервейшим делом.

1. Можете показать код вашей функции OnOK() ?
2. Приходит ли туда управление, когда вы нажимаете Enter?

А>Но у меня в окне куча контролов (EditDox, ListBox, ComboBox...)

Количество контролов в данном случае роли не играет

А>В любом из них нажатие Enter гасит окно.

Когда вы жмете Enter и контрол, имеюший в данный момент фокус, не нуждается в этой клавише,
то нажимается кнопка, имеющая стиль Default Button. Ни EditDox, ни ListBox, ни ComboBox в кнопке Enter не нуждаются. Поэтому диалог закрывает ваша Default Button. Какая кнопка у вас в диалоге Default?

А>Что делать в этом случае?

Искать, почемму диалог закрывается
Хотите сказать 'спасибо'? Тогда поставьте оценку
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.