Cтраница 2
Функция OnKi 11 Focus вызывается каждый раз, когда окно представления теряет фокус ввода. [16]
Чтобы удалить указатель внутри обработчика сообщения WM KILLFOCOS, посылаемого при потере окном фокуса ввода, необходимо вызвать функцию: : DestroyCaret. Причиной уничтожения указателя является то, что указатель может иметь только то окно, в котором находится фокус ввода. [17]
После создания элемента управления функцией Create была вызвана функция Set Focus для передачи фокуса ввода созданному полю редактирования. И затем функция OnlnitDialog вернула значение FALSE - в этом случае фокус ввода устанавливается на первый элемент управления. [18]
Оконные визуальные компоненты ( самая многочисленная группа компонентов) - это компоненты, которые могут получать фокус ввода ( т.е. становиться активными для взаимодействия с пользователем) и содержать другие визуальные компоненты. [19]
При каждом нажатии клавиши система посылает сообщение WM KEYDOWN окну, в котором в данный момент находится фокус ввода, принадлежащий либо активному окну, либо наследуемому из активного окна. Активное диалоговое окно имеет выделенный заголовок или рамку. В программе MFC, сгенерированной мастером AppWizard, при активном главном окне фокус содержится в окне представления, следовательно, при нажатии клавиши именно это окно получает сообщения WM KEYDOWN. В MDI-приложении фокус находится в активном окне представления. Предоставление обработчика сообщения WM KEYDOWN полезно, прежде всего, при визуализации сообщений клавиш, которые не генерируют печатные символы, например, стрелок и функциональных клавиш. [20]
![]() |
Диалоговое окно Edit Tab Order.| Пример InFocus. [21] |
Помимо представленных здесь основных установок важно знать, что каждый раз, когда компонент получает или теряет фокус ввода, он получает соответствующее событие OnEnter или OnExit. Это позволяет подстроить порядок операций пользователя. Некоторые из этих технологий продемонстрированы в примере InFocus, создающем обычное окно ввода пароля. Внизу окна имеется область состояния с указаниями для пользователя. Каждый пункт необходимо вводить в строгой последовательности. [22]
В этом случае блок диалога необходимо закрыть до того как он будет выведен на экран или до установки фокуса ввода на какой-либо элемент управления. [23]
Обратите внимание, что компонент присваивает свойству DefaultDrawing значение False, благодаря этому он берет на себя ответственность за перерисовку фона и прямоугольника, обозначающего фокус ввода. Кроме того, выполняется обращение к функции InflateRect, из-за чего между границей ячейки и ее содержимым сохраняется небольшое пространство. Вывод текста выполняется при помощи еще одной функции Windows API под названием DrawText. Эта функция центрует текст вертикально в ячейке. [24]
![]() |
Выберитетекст или рис окАЛЯ создаваемой кнопки.| В форме Товары теперь появилась кнопка, позволяющая распечатать форму. [25] |
В итоге такой порядок не всегда оказывается удачным, так как при создании, например, специального элемента управления Поле со списком для поля Производитель формы Товары при использовании клавиатуры фокус ввода в поле - i j; гг. [26]
Фокус ввода перемещается в эту группу. [27]
Порядок обхода управляет последовательностью получения фокуса ввода элементами управления с установленным свойством Tab Stop при нажатии клавиш Tab или Shift Tab. Нажатие клавиши Tab перемещает фокус ввода на следующий элемент управления в соответствии с порядком обхода. Нажатие клавиш Shift Tab перемещает фокус на предыдущий элемент управления. Когда фокус ввода находится на конкретном элементе управления, последний отвечает за ввод данных с клавиатуры. [28]
![]() |
Пример DbTrack демонстрирует использование элемента управления TrackBar. [29] |
При выполнении условий компонент обновляет данные в соответствующем поле таблицы. Наконец, когда компонент теряет фокус ввода, он должен форсировать обновление данных ( если данные были изменены), так как в этом случае другие элементы управления, связанные с этими данными, будут отображать обновленное значение, как только пользователь переместит фокус ввода на новое место. Если данные не менялись, компонент не выполняет обновления данных в таблице. [30]