Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Краткие теоретические сведения. Все элементы управления (Control) являются окнами, подчиненными и дочерними (child) по отношению к окну




Все элементы управления (Control) являются окнами, подчиненными и дочерними (child) по отношению к окну, на котором они располагаются. Система предоставляет готовые классы для ряда элементов управления, таких как кнопки (Button), текстовые поля (Static), поля ввода (Edit) и так далее. Для этих стандартных элементов определены специфичные сообщения и присут­ствуют оконные процедуры, обрабатывающие эти сообщения. Про­грам­мы пользователя могут создавать собственные элементы, в этом случае необхо­димо описать их поведение и, возможно, зарегистрировать соответ­ствующие «пользовательские» сообщения.

Элементы управления должны скрывать от прикладной программы все подробности возникающих с ними элементарных событий (например, движе­ние «мыши» и нажатия ее кнопок). Оконная процедура элемента должна пре­образовать их в событие более высокого уровня (например, нажатие кнопки). Естественно, это событие также представляется соответствующим сообщением.

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

Так, элемент «Кнопка» в результате завершенного нажатия генерирует сообщение WM_COMMAND, в параметре wParam которого присутствует идентификатор этого элемента.

Приведенный ниже вызов создает стандартный элемент управления «Кнопка» с заданными именем, координатами, размером и стилем.

 

hButton = CreateWindow(

"BUTTON", //имя глобального системного класса «Кнопка»

"Btn_Action", //имя кнопки

WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, //стиль окна

x, y, width, height, //положение и размер кнопки

hMainWnd, //главное окно

(HMENU)id_Btn_Action, //ID элемента управления

hMainInst, //приложение

NULL

);

В оконной процедуре будет присутствовать проверка поступающих сообщений WM_COMMAND на это значение идентификатора элемента:

switch (uMsg) {

case WM_COMMAND:

switch(LOWORD(wParam)) {

case id_Btn_Action:

… //обработка нажатия кнопки Btn_Action

break;

}

break;

}

Непосредственная работа с идентификаторами и сообщениями доста­точ­но трудоёмка, поэтому при программировании сложных интерфейсов целесо­образно создавать некоторые средства автоматизации назначения и анализа идентификаторов. Среды программирования обычно предлагают собственные решения для этого, например карты сообщений в Visual Studio.

Для большинства операций, выполняемых с элементами управления (получение и установка параметров, перемещение и так далее) используются специализированные сообщения, поверх которых могут быть предусмотрены «оберточные» функции для более удобного обращения к ним. В зависимости от их типа сообщения могут требовать передачи либо через очередь, либо непо­средственно в оконную процедуру соответствующего элемента. Список сооб­щений достаточно велик и различается для каждого вида элементов управ­ления.

Например, следующий вызов заставляет кнопку изменить свое состояние на «нажатое»:

SendMessage(hButton, BM_SETSTATE, (WPARAM)TRUE, 0);

Однако это приводит только к перерисовке самой кнопки, но не к появ­лению события ее нажатия, которое приходится генерировать отдельно:

PostMessage(hButton, BM_CLICK, 0, 0);

В итоге получаем «программно нажимаемую» кнопку.

Контрольные вопросы

1. Создание на окне элементов управления: Edit, Button, ListBox, ComboBox и т.д.

2. Получение доступа текст, введенный в Edit, и установка его нового значения.

3. Обработка нажатий на кнопки (элемент Button).

4. Формирование списка строк в элементе ListBox, получение доступа к выделенной в нем строке.

5. Формирование списка строк в элементе ComboBox, получение доступа к выбранной в нем строке.

Задание

Написать программу, которая создает окно с двумя элементами управ­ления ListBox, одним Edit и четырьмя Button («Add», «Clear», «ToRight» и «Delete»). При нажатии на кнопку «Add» текст из Edit должен добавляться в первый ListBox, если такого текста там еще нет (необходимо выполнить проверку). Нажатие кнопки «Clear» очищает оба ListBox-а. Нажатие кнопки «ToRight» копирует выделенную строку из первого ListBox во второй (если там еще нет такой строки). Нажатие кнопки «Delete» удаляет выделенные строки в каждом из ListBox-ов.

Лабораторная работа №8
Графический ввод-вывод в оконном приложении

Цели работы:

1) изучить графическую подсистему GDI.

2) научиться использовать графику GDI.





Поделиться с друзьями:


Дата добавления: 2016-11-12; Мы поможем в написании ваших работ!; просмотров: 429 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

В моем словаре нет слова «невозможно». © Наполеон Бонапарт
==> читать все изречения...

2174 - | 2121 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.