| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > CEdit и SetFocus |
| Автор: mrgloom 3.12.2012, 09:47 | ||||
| хочу поставить фокус на CEdit в окне которое вызывается как DoModal() использую код
падает в winocc.cpp 359
не могу понять в чем дело. |
| Автор: Earnest 3.12.2012, 11:06 |
| А чего тут непонятного? Не окно это (в текущий момент). Где код, связывающий m_profile_name с контролом в диалоге? Обычно это делается в DoDataExchange через DDX_Control. А Do DataExchange вызывается из базового OnInitDialog, который ты зачем-то простил. |
| Автор: mrgloom 3.12.2012, 11:07 | ||||||||
заметил что и когда GetWindowTextA от переменной CEdit
происходит ошибка
похоже дело в самом CEdit? только непонятно в чём всёравно. т.к. в самом коде он определен как
и больше нигде не встречается |
| Автор: mrgloom 3.12.2012, 11:22 | ||||||
я сначала подумал "постил", а потом понял "пропустил". да нужно
кстати давно назревал вопрос когда это нужно и когда нет? т.е. использовать какой то код от родителя руками и почему он не вызывается сам? опять же почему тут нужен OnOK() и почему не CDialog::OnOK()?
|
| Автор: Earnest 3.12.2012, 11:54 |
| 1) Вызывать базовый OnInitDialog из своего переопределенного нужно всегда. Причем ДО обращения к связанным контролам. Само вообще никогда ничего не делается. Либо ты делаешь, либо кто-то другой за тебя. 2) Возвращать TRUE или FALSE - ты, видимо, знаешь, когда: если фокус выставляешь сам, то возвращай FALSE 3) CDialog::OnOk и просто OnOk теоретически разные ф-и (унаследованная и переопределенная в твоем классе). Так что какую вызывать - зависит от ситуации. Если в своем классе не переопределяешь - не важно, будет одно и то же. |