Фокус ввода

Для распределения сообщений от клавиатуры используется концепция так называемого клавиатурного фокуса ввода. Фокус ввода - это атрибут, который присваивается элементу диалога. Если элемент имеет фокус ввода, то он получает все клавиатурные сообщения (в основном :-) из системной очереди FAR Manager.

Менеджер диалогов может передавать фокус ввода от одного элемента другому. Когда вы нажимаете клавиши Tab, Shift-Tab или Alt-Символ, фокус ввода передается следующему/предыдущему элементу диалога (или элементу диалога, имеющему соответствующую горячую клавишу).

Функция обработки диалога может проследить за получением и потерей фокуса ввода. Когда элемент получает фокус ввода, функции-обработчику передается сообщение DN_GOTFOCUS. Когда элемент теряет фокус ввода, функции-обработчику передается сообщение DN_KILLFOCUS. В ответ на сообщение DN_KILLFOCUS функция обработки диалога может запретить потерю фокуса ввода, вернув значение -1. Сообщение DN_GOTFOCUS носит чисто информативный характер, т.е. вы не можете отменить данное событие, как таковое.

Программный интерфейс Dialog API Far Manager содержит два сообщения, позволяющие узнать или изменить элемент, владеющий фокусом ввода. Эти сообщения имеют соответственно имена DM_GETFOCUS и DM_SETFOCUS.

Ниже перечислены элементы диалога, которые могут иметь клавиатурный фокус ввода (при условии, что для этих элементов не выставлены флаги DIF_NOFOCUS и/или DIF_DISABLE):

ЭлементОписание
DI_BUTTON Кнопка (Push Button).
DI_CHECKBOX Контрольный переключатель (Check Box).
DI_COMBOBOX Комбинированный список.
DI_EDIT Поле ввода.
DI_FIXEDIT Поле ввода фиксированного размера.
DI_LISTBOX Окно списка.
DI_PSWEDIT Поле ввода пароля.
DI_RADIOBUTTON Селекторная кнопка (Radio Button).
DI_USERCONTROL Элемент управления, определяемый программистом.
Смотрите также:
DefDlgProc, DialogEx, SendDlgMessage