Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лекция 7. Элементы управленияСодержание книги
Поиск на нашем сайте
Элемент управления (ЭУ) – это дочернее окно специального типа, обычно применяемое для того, чтобы пользователь мог с его помощью выполнить какое-то простое действие (например, выполнить команду). В результате этого действия элемент управления посылает окну-владельцу сообщение. Например, у нажимаемой кнопки есть единственная простая функция – когда пользователь нажимает кнопку, то она посылает своему родительскому окну (диалоговому окну) сообщение WM_COMMAND. Чаще всего ЭУ встречаются в диалоговых окнах, но их можно использовать и в любых других окнах, в т.ч. в окнах верхнего уровня. В Windows есть набор стандартных классов ЭУ (6 типов). Они появились в самой первой версии Windows и реализованы в модуле User.exe. Еще примерно 15 типов ЭУ появились в Windows 95. Их, чтобы отличать от ЭУ старых версий Windows, иногда называются стандартными элементами управления Windows 95. Они реализованы в динамической библиотеке Comctl32.dll. Т.к. ЭУ являются дочерними окнами, они автоматически перемещаются вместе с родительским окном, автоматически уничтожаются вместе с ним, а также ограничены при отображении областью родительского окна. Все сообщения от ЭУ посылаются родительским окнам.
Стандартные элементы управления В таблице 7.1 перечислены 6 типов ЭУ, для которых Windows автоматически регистрирует оконные классы, вместе с соответствующими классами-оболочками MFC. Таблица 7.1. Стандартные элементы управления
ЭУ можно создать как объект класса MFC и вызвать у него функцию-член Create, например, для создания кнопки с надписью Запуск:
В этом примере создается нажимаемая кнопка (стиль BS_PUSHBUTTON), которая будет дочерним окном окна this и будет занимать в его клиентской области область rect. Целочисленный идентификатор IDC_BUTTON часто называется идентификатором дочернего окна или идентификатором элемента управления. В данном окне все дочерние ЭУ, на сообщения которых требуется реагировать, должны иметь уникальные идентификаторы. ЭУ посылают окну-владельцу уведомления о событиях в виде сообщений WM_COMMAND. Смысл этих сообщений зависит от типа элемента, но в любом случае, уточняющая информация хранится в параметрах сообщения wParam и lParam. В них передается идентификатор ЭУ и код уведомления. Так, при нажатии нажимаемой кнопки она посылает сообщение WM_COMMAND с кодом уведомления BN_CLICKED, который занимает старшие 16 бит слова wParam. Идентификатор кнопки помещается в младшие 16 бит слова wParam. В lParam передается оконный идентификатор кнопки. Чтобы не разбирать сообщения WM_COMMAND "поразрядно", в большинстве MFC-приложений для связи уведомлений ЭУ с функциями-членами для их обработки используется карта сообщений. Например, чтобы при нажатии кнопки IDC_BUTTON вызывалась функция-член OnButtonClicked, в карту сообщений надо внести запись:
ON_BN_CLICKED – один из нескольких макросов карты сообщений MFC, связанных с уведомлениями ЭУ. Есть набор макросов ON_EN_... для элементов редактирования и ON_LBN_... для списков. Также есть общий макрос ON_CONTROL, который позволяет обрабатывать любые уведомления от ЭУ любого типа. ЭУ посылают сообщения своим окнам-владельцам, но очень часто сообщения посылаются и в обратном направлении. Например, в кнопке с независимой фиксацией можно поставить флажок, если послать ей уведомление BM_SETCHECK с параметром wParam =BST_CHECKED. MFC упрощает посылку сообщений ЭУ за счет того, что в их классах-оболочках есть функции-члены с понятными названиями. Например, чтобы послать сообщение BM_SETCHECK, можно вызвать функцию-член CButton:
Т.к. ЭУ являются окнами, для работы с ними полезны некоторые функции-члены, унаследованные от CWnd. Например, функция SetWindowText меняет заголовок окна верхнего уровня, но также помещает текст в элемент редактирования. Есть и другие полезные функции CWnd: GetWindowText для получения текста от ЭУ, EnableWindow для включения/выключения ЭУ, SetFont для изменения шрифта ЭУ. Если вы хотите сделать что-то с ЭУ, но не находите подходящей функции-члена в классе-оболочке ЭУ, может быть, вы найдете нужную функцию в классе CWnd.
1.1 Кнопки: класс CButton Класс CButton представляет ЭУ "кнопка". Есть четыре разновидности кнопок (рис. 7.1): нажимаемые кнопки, кнопки с независимой фиксацией, кнопки с зависимой фиксацией и групповые блоки. Рис. 7.1. Четыре разновидности ЭУ "Кнопка". При создании кнопки определенного типа ей вместе с флагами оконного стиля указывается один из стилей кнопки, например, BS_PUSHBUTTON или BS_CHECKBOX. Некоторые стили влияют на способ расположения текста на кнопке (BS_LEFT, BS_CENTER и др.).
Нажимаемые кнопки Нажимаемая кнопка – это ЭУ кнопка со стилем BS_PUSHBUTTON. При нажатии она посылает родительскому окну уведомление BN_CLICKED. Например, обработку нажатия кнопки можно выполнить так:
Как и командные обработчики пунктов меню, обработчики BN_CLICKED не имеют ни параметров, ни возвращаемого значения.
|
|||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-01; просмотров: 339; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.224.105 (0.006 с.) |