edit=GetDlgItem(IDC_EDIT1);
edit->SetFocus();
Как поместить фокус в поле Edit Box
SetFocus() ?
Спасибо, но не получаеться использовать..
Делаю:
В OnInitDialog:
Код:
где
CWnd*edit - член ДЛГшного класса.
Кликнешь по своему Edit'у правой кнопкой, далее Add Variable.
Тип - Control а не Value. Впишешь имя переменной, подвязанной к edit'у.
А потом в нужном месте просто так: m_Edit1.SetFocus().
Вот пример - это работает. :-)))
И еще одно как сделать чтобы в поле ввода открывшегося окна был не "0", а пусто? :)
Кладу исходник.
Код:
void CSecond::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSecond)
DDX_Control(pDX, IDC_EDIT1, m_ed);
DDX_Text(pDX, IDC_EDIT1, m_edval); // вот здесь и ставится НОЛЬ в твой Edit. закоментируй и посмотри что будет.
//}}AFX_DATA_MAP
}
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSecond)
DDX_Control(pDX, IDC_EDIT1, m_ed);
DDX_Text(pDX, IDC_EDIT1, m_edval); // вот здесь и ставится НОЛЬ в твой Edit. закоментируй и посмотри что будет.
//}}AFX_DATA_MAP
}
Действительно, не отображает ноль; но ведь значение переменной нельзя изменить таким EditBox-ом.... :)
Но решение есть всегда! :-)
Код:
m_ed.SetFocus();
m_ed.SetWindowText("");
m_ed.SetWindowText("");
:-)))))))))))
Но решение есть всегда! :-)
[/QUOTE] ну-ну, всеравно спасибо.
Также нашел в MSDN:
Код:
BOOL CChangeNumber::OnInitDialog()
{
CDialog::OnInitDialog();
m_ed.SetSel(0, -1); //Очистить
m_ed.Clear(); //поле
m_ed.SetFocus(); //НЕ РАБОТАЕТ, ХОТЬ УБЕЙТЕ
return TRUE;
}
{
CDialog::OnInitDialog();
m_ed.SetSel(0, -1); //Очистить
m_ed.Clear(); //поле
m_ed.SetFocus(); //НЕ РАБОТАЕТ, ХОТЬ УБЕЙТЕ
return TRUE;
}
SetFocus() не хочет работать :(
Еще раз говорю что в MFC не шарю особо, но может таймер создашь который через 100 мс SetFocus() вызывает? %) сто процентов заработает, только кривизна способа смущает :-)))
CWnd * cw = GetDlgItem(IDC_EDIT1);
cw->SetFocus(); //or GoToDlgCtrl(cw);
Чуть не забыл прорпиши это в функции
CDialog::OnInitDialog()
m_ed.SetSel(0, -1); //Очистить
m_ed.Clear(); //поле
а
m_ed.SetWindowText="";
или
m_edval="";
UpdateData(FALSE);
http://www.xserver.ru/computer/sredaprogr/msvc/6/9.shtml
То есть нужно прописать в OnInitDialog() что-то типа
GotoDlgCtrl(GetDlgItem(IDC_EDIT1));
или
CWnd * cw = GetDlgItem(IDC_EDIT1);
cw->SetFocus(); //or GoToDlgCtrl(cw);
и в конце return FALSE (а не TRUE, как там стоит по умолчанию)
при этом переменная объекта может быть и класса CString
Тоже возникла такая проблема, нашел ответ здесь:
Код:
Метод OnInitDialog возвращает значение TRUE . Это означает, что фокус ввода будет установлен на первый орган управления диалоговой панели. Первый орган диалоговой панели можно выбрать в редакторе диалоговой панели.
Если во время инициализации диалоговой панели метод OnInitDialog устанавливает фокус ввода другому органу управления, метод должен вернуть значение FALSE.
Если во время инициализации диалоговой панели метод OnInitDialog устанавливает фокус ввода другому органу управления, метод должен вернуть значение FALSE.
То есть нужно прописать в OnInitDialog() что-то типа
GotoDlgCtrl(GetDlgItem(IDC_EDIT1));
или
CWnd * cw = GetDlgItem(IDC_EDIT1);
cw->SetFocus(); //or GoToDlgCtrl(cw);
и в конце return FALSE (а не TRUE, как там стоит по умолчанию)
при этом переменная объекта может быть и класса CString
ага, есть такое ;)