Работа с элементами управления
Каждый элемент управления имеет свой набор атрибутов, называемых также свойствами элемента управления.
Изменение атрибутов элемента управления в процессе выполнения приложения происходит или под воздействием пользователя на данный элемент управления, или программным путем.
Так как все элементы управления реализуются классами, производными от CWnd, то они являются оконными объектами. Как и для всех оконных объектов, процесс создания включает в себя два этапа:
- создание элемента управления (например, размещение его в шаблоне диалога);
- связывание его с объектом или переменной.
Если элемент управления не требуется изменять в процессе выполнения приложения, то для него можно не выполнять связывание с объектом или с переменной.
Все элементы управления, встраиваемые в диалоговые окна, можно подразделить на общие и ActiveX-элементы управления. Библиотека MFC поддерживает как те, так и другие, инкапсулируя их свойства и поведение в соответствующих классах.
Инициализацию элементов управления можно выполнять в методе OnInitDialog класса диалога.
Чтобы изменять значения, отображаемые элементами управления, или использовать значения, определяемые посредством действий пользователя, приложению нужно иметь доступ к элементам управления.
Доступ к элементам управления может быть реализован различными способами:
- элемент управления связывается с некоторой переменной;
- элемент управления связывается с объектом соответствующего класса, и для работы с ним используются методы этого класса;
- элемент управления не связывается ни с каким объектом, а для доступа к нему используется его идентификатор (отображаемый на странице свойств);
- переменная, инициируемая указателем на элемент управления. Указатель на элемент управления можно получить вызовом метода CWnd::GetDlgItem с заданным в качестве параметра идентификатора элемента управления.
Например:
// 1. Инициализация указателем: CEdit* pEdit1 = (CEdit*) GetDlgItem(IDC_EDIT1); // Конструкция pMyStat-> Metod() позволяет вызывать // любые методы класса // 2.
Доступ по идентификатору: SetDlgItemText(IDC_EDIT1, L"12345");
Для связывания элемента управления с переменной или объектом соответствующего класса можно использовать диалог Add Member Variable Wizard (рис. 21.4), вызываемый командой контекстного меню Add Variable.
Рис. 21.4. Диалог Add Member Variable
Флажок Control variable определяет способ использования создаваемой переменной:
- при установленном флажке связь будет осуществляться с объектом соответствующего класса;
- при снятом флажке устанавливается связь с переменной и обмен данными выполняется DDX-методами, автоматически добавляемыми в переопределяемый метод DoDataExchange. Метод DoDataExchange вызывается методом UpdateData, указывающим в качестве параметра направление обмена данными: из переменной в элемент управления или наоборот.