MFC-классы для манипулирования элементами управления




 

MFC-класс Тип и описание элемента управления
CAnimateCtrl Анимация
CButton Кнопки, флажки, переключатели, рамки
CBitmapButton Кнопки, отображающие растровые рисунки
CComboBox Поле со списком
CComboBoxEx Расширенное поле со списком
CDateTimeCtrl Элемент Дата/Время
CEdit Поле
CHeaderCtrl Заголовок — окно, размещаемое над столбцами таблицы и содержащее заголовки столбцов с настраиваемой шириной
CHotKeyCtrl Горячая клавиша
CIPAddressControl IP-адрес
CListBox Список
CCheckListBox Список с флажками. Каждый пункт содержит флажок. Например, программа Setup в Visual C++ использует списки с флажками для предоставления пользователю возможности выбора инсталлируемых компонентов
CDragListBox Перемещаемый список. Позволяет пользователю перемещать отдельные пункты списка для их переупорядочения
CListCtrl Окно списка
CMonthCalCtrl Календарь по месяцам
COleControl Элементы управления ActiveX — многократно используемые компоненты программного обеспечения.
ProgressCtrl Индикатор
CReBarCtrl Переключаемая панель.
CRichEditCtrl Расширенное поле
CScrollBar Полосы прокрутки: вертикальная или горизонтальная
CSliderCtrl Регулятор
CSpinButtonCtrl Счетчик
CStatic Надписи, рисунки и рамки
CStatusBarCtrl Строка состояния. Использование класса CStatusBarCtrl — альтернатива способу создания строк состояния
CTabCtrl Набор вкладок. Использование класса CTabCtrl — альтернатива способу создания диалоговых окон с вкладками в программах MFC (далее в этой главе)

Окончание табл. 6.3

MFC-класс Тип и описание элемента управления
CToolbarCtrl Панель инструментов. Использование класса CToolbarCtrl — альтернатива способу создания панелей инструментов в программах MFC
CTooltipCtrl Всплывающая подсказка. При создании панели инструментов MFC автоматически реализует всплывающие подсказки
CTreeCtrl Дерево

 

Функции-члены этих классов можно применять для получения информации или выполнения операций над элементом управления в диалоговом окне. Так как каждый из классов управления порождается прямо или косвенно от класса CWnd, то в число вызываемых функций-членов входят также функции, определенные в классе CWnd. В табл. 6.4 приведены функции, которые можно использовать для манипулирования элементами управления.

Т а б л и ц а 6.4

 

Функции класса CWnd для манипулирования
элементами управления диалогового окна

 

Функция Назначение
CheckDlgButton() Выбирает или отменяет выбор флажка или переключателя
CheckRadioButton() Выбирает указанный переключатель и отменяет выбор остальных переключателей в указанном наборе
DlgDirList() Добавляет имена файлов, каталогов или дисков в список
DlgDirListComboBox() Добавляет имена файлов, каталогов или дисков в поле со списком
DlgDirSelect() Получает имя текущего, выбранного в списке, файла, каталога или диска
DlgDirSelectComboBox() Получает имя текущего, выбранного в поле со списком, файла, каталога или диска
GetCheckedRadioButton() Возвращает идентификатор выбранного переключателя в указанном наборе переключателей
GetDlgItem() Возвращает указатель на временный объект для заданного элемента управления
GetDlgItemInt() Возвращает числовое значение, представленное в текстовом виде в указанном элементе управления
GetDlgItemText() Получает текст, отображаемый внутри элемента управления

 


Окончание табл. 6.4

Функция Назначение
GetNextDlgGroupItem() Возвращает указатель на временный объект для следующего (или предыдущего) элемента управления внутри группы
GetNextDlgTabItem() Возвращает указатель на временный объект для следующего элемента управления (в порядке обхода), которому задано свойство Tabstop
IsDlgButtonChecked() Возвращает статус отметки флажка или переключателя
SendDlgItemMessage() Посылает сообщение элементу управления
SetDlgItemInt() Преобразовывает целое число в текст и передает его элементу управления
SetDlgItemText() Задает текст, отображаемый элементом управления
EnableWindow() Разрешает или блокирует доступ к элементу

 

Вызов функции, инкапсулируемой в классе элемента управления диалогового окна, выполняется через объект класса элемента управления, связанный с элементом управления. Создать объект класса элемента управления можно такими способами.

Первый способ использует диалоговое окно Add Member Variable Wizard, в котором надо установить флажок Control variable, в списке Category выбрать значение Control. Мастер создаст соответствующий объект для элемента управления, например, объект класса CEdit для поля. При отображении диалогового окна MFC автоматически свяжет элемент управления с объектом класса так, чтобы можно было вызывать функции класса элемента управления для работы с ним. Функции можно вызывать только тогда, когда диалоговое окно отображено, иначе подобная связь не поддерживается.

Второй способ использует функцию CWnd::GetDlgItem()для объекта диалогового окна, чтобы получить указатель на временный объект элемента управления внутри диалогового окна. Например, вместо создания постоянного объекта класса элемента управления можно из функции CFormatDlg::OnInitDialog() инициализации диалогового окна вызвать функцию CWnd::GetDlgItem(), чтобы получить указатель на временный объект, для которого затем вызываются функции класса объекта управления. Прототип функции CWnd::GetDlg-Item() такой

CWnd* CWnd::GetDlgItem(int nID) const;

Параметр nID определяет идентификатор элемента управления, указатель на который требуется получить. Так как функция CWnd::GetDlgItem() возвращает указатель класса CWnd, то его необходимо преобразовать в указатель на соответствующий класс элемента управления. Так как указатель временный, он используется только во время обработки текущего сообщения и в дальнейшем не сохраняется.

Приведем пример определения указателя на объект класса CEdit, который связан с элементом управления, имеющим идентификатор IDC_SPACING.

CEdit *p_Edit = (CEdit *)GetDlgItem (IDC_SPACING);

При работе с флажками и переключателями необходимо определять их состояние. Эти элементы управления могут быть выбраны (установлены) или не выбраны (сброшены). Функция CWnd::IsDlgButtonChecked()вызывается для того, чтобы убедиться, что переключатель выбран или флажок установлен. Параметр определяет идентификатор элемента управления. Прототип функции такой.

UINT CWnd::IsDlgButtonChecked(int nIDButton) const;

Если в процессе работы с элементами управления необходимо сделать недоступным переключатель или запретить его отметку, то необходимо получить объект класса CButtonи связать его с переключателем, имеющим заданный идентификатор. Чтобы выбрать переключатель или отменить его выбор, вызовите функцию CButton::SetCheck(), прототип которой показан ниже. Параметр функции задает состояние переключателя (1 — выбран, 0 — не выбран, 2 — неопределенное).

void CButton::SetCheck(int nCheck);

Для разрешения или блокирования доступа к переключателю используют функцию CWnd::EnableWindow()с аргументом, равным TRUE, если элемент доступен, и FALSE, если он заблокирован. Прототип функции приводится ниже.

BOOL CWnd::EnableWindow(BOOL bEnable = TRUE);

Объекты класса CEdit, которые связаны с текстовым полем диалогового окна, можно использовать для ограничения количества вводимых символов. Для этого вызывают функцию CEdit::LimitText(), предварительно определив указатель на элемент управления.

((CEdit *)GetDlgItem (IDC_SPACING))->LimitText (1);

Хотя элементы управления обычно связаны с диалоговыми окнами, их можно отображать внутри любого окна программы. Например, можно отобразить один или несколько элементов управления прямо внутри окна представления. В этом случае необходимо добавить код для явного создания, размещения и отображения элемента управления. Для этого объявите объект соответствующего MFC-класса элемента управления (можно сделать его членом класса главного окна). Вызовите функцию-член класса элемента управления Create(), чтобы отобразить его, задав требуемый размер, позицию и другие атрибуты. Обратите внимание: элемент управления является дочерним по отношению к окну, в котором он отображается. Если окно представления в основном содержит лишь набор элементов управления, лучше всего породить класс представления от класса CFormViewи использовать шаблон диалогового окна вместо создания элементов управления по отдельности.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-04-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: