#c #visual-c #mfc #focus #editbox
#c #visual-c #mfc #фокус #окно редактирования
Вопрос:
У меня есть диалоговое окно (CDialog) с отрисованным владельцем CTabCtrl в нем. Содержимое вкладок — это дочерние диалоги (по одному для каждой вкладки). На каждой вкладке есть CEdit. Когда пользователь нажимает на вкладку, я скрываю все дочерние диалоги с помощью ShowWindow (SW_HIDE) и показываю выбранный.
Проблема в том, что когда у меня есть, например, две вкладки, щелкните внутри окна редактирования на первой вкладке, а затем переключитесь на вторую, фокус ввода остается на этом (невидимом) окне редактирования на первой вкладке, независимо от того, что я делаю в своем коде (пробовал вызывать все методы, которые потенциально могут устанавливать фокус, ничего не изменилось).
Ответ №1:
Попробуйте это:
GetDlgItem(IDC_YOURCONTROL)->SetFocus();
Или соответствующая переменная, связанная с элементом управления:
m_YOURCONTROLControl.SetFocus();
Комментарии:
1. Виден ли элемент управления до установки фокуса? Другой вариант — сначала задать для вкладки (у нее должен быть явный идентификатор) значение itsef, а затем элемент управления.