4. Установить новые флаги при помощи вызова функции SetWindowLong(Get-DlgItem(hDlg.RADIUS). GWLJTYLE.Style).
Элементы Edit применяются для создания дочерних окон, в которых пользователь может вводить те или иные значения. В окне диалога помещают также название изменяемого параметра (окно класса Static) и кнопки Принять, Отказ, Выход. Использование этого диалогового окна обычно предусматривает синхронное или асинхронное изменение переменных.
При синхронном изменении пользователь вводит с клавиатуры значения нескольких параметров, но изменяются все параметры одновременно только после нажатия кнопки Принять. При нажатии кнопки Отказ параметры остаются неизменными и данные, введенные пользователем, не сохраняются. Обычно щелчок по любой из этих кнопок вызывает закрытие диалога, но в диалоге можно также предусмотреть отдельную кнопку Выход.
При асинхронной настройке нажатие клавиши Enter во время ввода данных в поле элемента Edi t приводит к немедленному изменению соответствующего параметра. Окно при этом может не закрываться, позволяя снова вводить данные в том же поле. Нажатие кнопки Отказ приводит к отмене всех сделанных после вызова диалога изменений.
Элементы управления в диалоговых окнах
Синхронное изменение реализовать проще всего. Предположим, что в диалоговом окне hDlg находится поле класса Edit с идентификатором IDCEDIT. Для решения задачи ввода данных достаточно при нажатии кнопки Принять выполнить функцию записи в строку St г данных, которые были введены в поле IDC_EDIT:
GetDlgltemText (hDlg.IDCJDIT. Str. strlen(Str))
В качестве примера можно показать синхронный ввод данных, создав новое приложение на основе проекта MenuModif, включив в него вызов немодального диалога при помощи команды меню Recognize.
На рис. 8.1 показан фрагмент основного окна с катящимся колесом и окно диалога, позволяющее изменить радиус колеса и высоту области сообщений iHeight. При размещении в диалоговом окне полей редактирования не были взведены флаги ES_MULTYLINE и ES_WANTRETURN. В этом случае во время ввода значения параметра код клавиши Enter не попадает в поле Edi t. Нажатие на Enter рассматривается как щелчок назначенной по умолчанию кнопкой.