Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как поместить фокус в поле Edit Box

6.3K
26 июля 2006 года
triclosan
19 / / 11.08.2004
сабж.
240
26 июля 2006 года
aks
2.5K / / 14.07.2006
SetFocus() ?
6.3K
27 июля 2006 года
triclosan
19 / / 11.08.2004
[QUOTE=aks]SetFocus() ?[/QUOTE]
Спасибо, но не получаеться использовать..

Делаю:
В OnInitDialog:
 
Код:
edit=GetDlgItem(IDC_EDIT1);
edit->SetFocus();

где
CWnd*edit - член ДЛГшного класса.
354
27 июля 2006 года
ШпиЁн
468 / / 19.02.2006
Ясно, ты пишешь под MFC. Тогда все намного проще! :-)))

Кликнешь по своему Edit'у правой кнопкой, далее Add Variable.
Тип - Control а не Value. Впишешь имя переменной, подвязанной к edit'у.

А потом в нужном месте просто так: m_Edit1.SetFocus().

Вот пример - это работает. :-)))
6.3K
27 июля 2006 года
triclosan
19 / / 11.08.2004
Спасибо, понял. Но есть еще проблемы - контрол находится в классе дочирного окна. Добавляю для дочирного окна обработчик события WM_INITDIALOG, в созданую функцию m_Edit1.SetFocus() - не работает :(

И еще одно как сделать чтобы в поле ввода открывшегося окна был не "0", а пусто? :)

Кладу исходник.
354
27 июля 2006 года
ШпиЁн
468 / / 19.02.2006
Ты определил для своего Edit'a две переменные, и Control и Value.
 
Код:
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
}
6.3K
28 июля 2006 года
triclosan
19 / / 11.08.2004
Действительно, не отображает ноль; но ведь значение переменной нельзя изменить таким EditBox-ом.... :)
354
28 июля 2006 года
ШпиЁн
468 / / 19.02.2006
Ох-хо-хо.. :о))) признаю свою несостоятельность в MFC, я ведь начинающий, да и пишу на WinAPI.

Но решение есть всегда! :-)

 
Код:
m_ed.SetFocus();
m_ed.SetWindowText("");


:-)))))))))))
6.3K
28 июля 2006 года
triclosan
19 / / 11.08.2004
[QUOTE=ШпиЁн]Ох-хо-хо.. :о))) признаю свою несостоятельность в MFC
Но решение есть всегда! :-)
[/QUOTE] ну-ну, всеравно спасибо.

Также нашел в MSDN:
 
Код:
BOOL CChangeNumber::OnInitDialog()
{
    CDialog::OnInitDialog();

    m_ed.SetSel(0, -1); //Очистить
    m_ed.Clear();         //поле

    m_ed.SetFocus();   //НЕ РАБОТАЕТ, ХОТЬ УБЕЙТЕ
    return TRUE;
}


SetFocus() не хочет работать :(
354
28 июля 2006 года
ШпиЁн
468 / / 19.02.2006
Еще раз говорю что в MFC не шарю особо, но может таймер создашь который через 100 мс SetFocus() вызывает? %) сто процентов заработает, только кривизна способа смущает :-)))
1.8K
09 августа 2006 года
Death Knight
139 / / 19.02.2006
Попробуй так:
CWnd * cw = GetDlgItem(IDC_EDIT1);
cw->SetFocus(); //or GoToDlgCtrl(cw);

Чуть не забыл прорпиши это в функции
CDialog::OnInitDialog()
16K
09 августа 2006 года
koric
42 / / 06.08.2006
и попробуй ещё не
m_ed.SetSel(0, -1); //Очистить
m_ed.Clear(); //поле
а
m_ed.SetWindowText="";
или
m_edval="";
UpdateData(FALSE);
43K
31 октября 2008 года
arhad
4 / / 31.10.2008
Тоже возникла такая проблема, нашел ответ здесь: http://www.xserver.ru/computer/sredaprogr/msvc/6/9.shtml

 
Код:
Метод OnInitDialog возвращает значение TRUE . Это означает, что фокус ввода будет установлен на первый орган управления диалоговой панели. Первый орган диалоговой панели можно выбрать в редакторе диалоговой панели.

Если во время инициализации диалоговой панели метод OnInitDialog устанавливает фокус ввода другому органу управления, метод должен вернуть значение FALSE.


То есть нужно прописать в OnInitDialog() что-то типа

GotoDlgCtrl(GetDlgItem(IDC_EDIT1));

или

CWnd * cw = GetDlgItem(IDC_EDIT1);
cw->SetFocus(); //or GoToDlgCtrl(cw);

и в конце return FALSE (а не TRUE, как там стоит по умолчанию)

при этом переменная объекта может быть и класса CString
6.3K
01 ноября 2008 года
triclosan
19 / / 11.08.2004
ага, есть такое ;)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог