пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Задание идентификаторов диалогового окна и элементов управления. Создание класса диалогового окна. Ассоциированные переменные.

Задание идентификаторов диалогового окна и элементов управления.

Поскольку каждое диалоговое окно в приложении является уникальным объектом, разработчику практически всегда нужно присваивать окнам и элементам управления, входящим в их состав, идентификаторы по собственному выбору. Конечно, можно согласиться и с теми идентификаторами, которые предлагает редактор диалоговых окон по умолчанию. Они не несут смысловой нагрузки (как правило, нечто вроде IDD_DIALOG1, IDC_EDIT1, IDC_RADI01) и их можно заменить другими, связанными с назначением и функциями окна или элемента. Но в любом случае рекомендуется соблюдать соглашение о префиксах: идентификаторы диалоговых окон имеют префикс IDD_, а идентификаторы элементов управления – IDC_. Заменить идентификатор можно с помощью диалогового окна Dialog Properties. Для этого выберите элемент управления или диалог и Edit Properties, если ранее окно Dialog Properties не было выведено и закреплено на экране. Затем измените идентификатор ресурса в поле ID, но при этом не забывайте о префиксах: IDD_– для диалоговых окон и IDC_ – для элементов управления.

Создание диалогового окна Dialog

Установите элементы управления на поверхности диалога. Для этого  щелкните мышью на пиктограмме соответствующего элемента управления, а затем щелкните  на форме в том месте, где будет расположен  этот элемент. Если посчитаете нужным, "ухватитесь" указателем мыши за один из размерных маркеров вокруг изображения элемента. С помощью его передвижения можно изменять границы размеров элемента.

Добавьте элемент типа флажок и три переключателя в диалоговое окно, чтобы оно приняло вид …. В поле Caption измените надписи для переключателей. Пусть это будут One (один), Two (два) и Three (три). Чтобы выровнять включенные в окно элементы (выстроить их в колонку), выберите один из них, а затем, нажав и удерживая клавишу <Ctrl>, выберите по очереди остальные. После этого выберите  в меню Lay-Out\Align Control Left, затем выберите команду Lay-Out\Space Evenly\Down (Размещение\Подравнять интервал\Вниз). Эта команда позволяет установить одинаковый интервал между элементами по вертикали.

Выберите переключатель One, вызовите окно Dialog Properties и установите в нем флажок Group (Группа). Такая установка означает, что переключатель One является первым элементом группы переключателей, т.е. именно к переключателям, объединенным в группу, будет в дальнейшем применяться принцип «только один прав».

Теперь добавьте в формируемое окно еще и элемент типа список. Установите его слева от переключателей и измените размеры. В то время, когда этот элемент еще остается выбранным, с помощью команды View=> Properties вызовите на экран окно Dialog Properties. Выберите вкладку Styles (Стили) и проверьте, не установлен ли флажок Sort (Сортировка). Если этот флажок установлен, то при выполнении программы элементы в списке будут отсортированы по алфавиту.

Создание класса диалогового окна.

Когда формирование ресурсов диалогового окна будет завершено, вызовите на экран диалоговое окно мастера ClassWizard. Для этого нужно выбрать View\ClassWizard. Мастер ClassWizard обнаружит новый диалог и предложит создать новый класс. Установите переключатель Create a new class (создать новый класс) и  щелкните на ОК. Появится новое диалоговое окно New Class (новый класс). В поле Name (имя) введите имя нового класса (например, CSDIDialog) и щелкните на ОК. После этого ClassWizard создаст новый класс, подготовит файл текста программы SDIDialog.cpp и файл заголовка SDIDialog.h и включит их в состав проекта.

Создание ассоциированных переменных.

Ассоциированная переменная позволяет установить связь между текстом программы и ресурсами окна.

Ассоциированная переменная класса диалогового окна задается в ClassWizard на закладке Member Variables и соответствует либо значению - содержимому элемента управления, либо объекту класса соответствующего данному типу элемента управления. Пример демонстрирует один из вариантов ассоциативной связи. Элементу IDC_CHECK1 следует присвоить идентификатор переменной m_check. Нужно проверить, чтобы в раскрывающемся списке Category (Категория) было выбрано Value (Значение). Если вы раскроете список Variable type (Тип переменной), то увидите, что вам предоставлен единственный "свободный" выбор – BOOL. Флажок может быть либо установлен, либо сброшен, а значит, ассоциирован только с переменной типа BOOL, которая принимает только два значения – TRUE и FALSE. Нажмите на ОК для завершения процедуры.

Ниже перечислены типы переменных, которые могут быть ассоциированы с тем или иным типом элемента управления:

текстовые поля – как  правило, строковый тип(CString), но иногда и другие – int, fIoat и Iong;

кнопки – int;

флажки – BOOL;

переключатели – int;

список – строковый  тип;

поле со списком – строковый  тип;

полоса прокрутки – int .

Свяжите таким же образом значение, которое содержится в элементе IDC_EDIT1, с членом-переменной m_edit типа CString. Элемент IDC_LIST1 должен быть связан с членом-переменной m_list, который должен быть объектом класса CListBox (в списке Category должно быть избрано Control). Первый переключатель в группе IDC_RADIO1 должен быть связан с членом-переменной m_radio типа int, причем связь должна быть установлена по значению.

После добавления переменных ClassWizard предложит установить параметры, которые могут быть использованы для проверки достоверности ввода данных. Это делается не для всех видов переменных. Но, например, если речь идет о переменной, связанной с текстовым полем, СlassWizard предлагает в поле Maximum Characters (Максимум символов) установить максимальную длину вводимой строки. Для члена-переменной m_edit установите значение этого параметра равным 10. Если текстовое поле ассоциировано с переменной типа int или float, ClassWIzard использует эту же часть окна для установки верхнего и нижнего пределов вводимого пользователем значения. В дальнейшем всю работу по проверке соответствия введенного значения установленным ограничениям и выдачу в случае их нарушения сообщения с просьбой повторить ввод берут на себя функции из библиотеки MFC.


18.01.2020; 19:46
хиты: 44
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь