Ok && Cancel
От: -Cheese-  
Дата: 02.06.04 15:03
Оценка:
Такая проблемка!
Уменя есть основная форма, а ней tab control на всю форму (установленные по умолчанию кнопочки OK Cancel я поубивал)...
Теперь если я нажимаю ввод или эскейп, то програмка просто закрывается,даже если фокус на форме от таб контрола и на ней есть дефолтовая кнопочка (при нажатии энтера не она отрабатывается).
Как не дать этой програмке закрыться по эск или ентер???
Re: Ok && Cancel
От: scrap Беларусь  
Дата: 02.06.04 15:11
Оценка:
Здравствуйте, -Cheese-, Вы писали:

C>Такая проблемка!

C>Уменя есть основная форма, а ней tab control на всю форму (установленные по умолчанию кнопочки OK Cancel я поубивал)...
C>Теперь если я нажимаю ввод или эскейп, то програмка просто закрывается,даже если фокус на форме от таб контрола и на ней есть дефолтовая кнопочка (при нажатии энтера не она отрабатывается).
C>Как не дать этой програмке закрыться по эск или ентер???
C>

Попробуй в OnCommand поставить breakpoint и посмотреть какие коды приходят при нажатии на cancel и ok. Отлавливай их и пиши свои обработчики на эти команды. По моему так. Или в OnKeyDown. Но сначала всё таки первое проверь.
Re: Ok && Cancel
От: AlexEagle Украина http://www.vik.oil
Дата: 02.06.04 16:05
Оценка: +1
Здравствуйте, -Cheese-, Вы писали:

C>Как не дать этой програмке закрыться по эск или ентер???


Все гениальное просто! Перегрузи методы формы OnOk и OnCancel и там делай что угодгно кроме вызова CParentDlg::OnOK и CParentDlg::OnCancel.
Re[2]: Ok && Cancel
От: -Cheese-  
Дата: 03.06.04 05:28
Оценка:
Здравствуйте, AlexEagle, Вы писали:

AE>Здравствуйте, -Cheese-, Вы писали:


C>>Как не дать этой програмке закрыться по эск или ентер???


AE>Все гениальное просто! Перегрузи методы формы OnOk и OnCancel и там делай что угодгно кроме вызова CParentDlg::OnOK и CParentDlg::OnCancel.


А вот дело в том, что если в диалоге свойства перегрузить ОнОк, то при нажатии энтер эта ф-ция не вызывается. А на главном окне св-ва ОнОк нет (в визарде), т.к. кнопочку то я убил...
Re[3]: Ok && Cancel
От: Дмитрий Наумов  
Дата: 03.06.04 05:35
Оценка: +1
Здравствуйте, -Cheese-, Вы писали:

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


AE>>Здравствуйте, -Cheese-, Вы писали:


C>>>Как не дать этой програмке закрыться по эск или ентер???


AE>>Все гениальное просто! Перегрузи методы формы OnOk и OnCancel и там делай что угодгно кроме вызова CParentDlg::OnOK и CParentDlg::OnCancel.


C>А вот дело в том, что если в диалоге свойства перегрузить ОнОк, то при нажатии энтер эта ф-ция не вызывается. А на главном окне св-ва ОнОк нет (в визарде), т.к. кнопочку то я убил...

C>

Не визардом единым жив программист...
Визарду доверять — себя не уважать!
... << RSDN@Home 1.1.3 beta 2 >>
Re: Ok && Cancel
От: suffiks  
Дата: 03.06.04 09:02
Оценка: 2 (1)
Здравствуйте, -Cheese-, Вы писали:

C>Такая проблемка!

C>Уменя есть основная форма, а ней tab control на всю форму (установленные по умолчанию кнопочки OK Cancel я поубивал)...
C>Теперь если я нажимаю ввод или эскейп, то програмка просто закрывается,даже если фокус на форме от таб контрола и на ней есть дефолтовая кнопочка (при нажатии энтера не она отрабатывается).
C>Как не дать этой програмке закрыться по эск или ентер???

перегрузи OnCmdMsg вот так:

BOOL CMyDlg::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
// TODO: Add your specialized code here and/or call the base class
if( ((nID==IDOK)||(nID==IDCANCEL)) && (!m_CanCancel) )
return 1;
return CDialog::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}

void CMyDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
m_CanCancel=TRUE;
CDialog::OnClose();
}

переменная m_CanCancel для того что бы ты мог закрыть свой диалог при нажатии на крестик или Alt+F4
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.