Реферат: Windows
Типы окна
Тип окна задается 32-битовым целым числом, которое представляет собой комбинацию битовых флагов, определяющих различные свойства окна.
WS_OVERLAPPED - перекрывающееся окно. Перекрывающиеся окна - это основной наиболее универсальный тип окон Windows. Главное окно приложения обычно имеет такой вид.
WS_POPUP - вспомогательные окна. Они используются чаще всего для отображения окон диалога. Вот некоторые свойства вспомогательных окон:
- если такое окно имеет родительское окно, то всегда отображаются поверх всех окон на экране, даже когда пользователь делает активным другое окно;
- вспомогательные окна не имеют заголовка и часто должны иметь фиксированный размер.
WS_CHILD - дочернее окно. Окна такого типа создаются, если у приложения есть главное (а значит и перекрывающее окно) и связаны некоторыми характеристиками с тем окном из которого были вызваны. Все органы управления также являются дочерними окнами. Вот некоторые их свойства:
- дочерние окна никогда не отображаются вне своего родительского окна ни в раскрытом виде, ни в виде пиктограммы;
- координаты дочерних окон отчитываются от верхнего левого угла рабочей области окна-родителя и при перемещении последнего, дочерние окна перемещаются вместе с ним;
- дочернее окно никогда не может стать активным окном.
WS_MINIMIZE - создаваемое окно будет отображено в виде пиктограммы.
WS_VISIBLE - Окно становится видимым сразу после создания. Используется для диалоговых окон.
WS_DISABLED - создается неактивное окно.
WS_CLIPSIBLINGS - исключение областей, занимаемых
другими дочерними окнами из изменяемой области дочернего окна.
Используется только для дочерних окон.
WS_CLIPCHILDREN - исключение областей, занимаемых
другими дочерними окнами при изменении рабочей области
родительского окна. Используется только для родительских окон.
WS_MAXIMIZE - создаваемое окно будет отображено в максимально возможном виде.
WS_CAPTION - окно имеет рамку и заголовок, а следовательно пользователь может перемещать его при помощи мыши.
WS_BORDER - окно имеет широкую рамку без заголовка. Используется при создании диалоговых окон.
WS_DLGFRAME - окно имеет тонкую рамку без заголовка.
WS_VSCROLL - окно имеет вертикальную полосу просмотра.
WS_HSCROLL - окно имеет горизонтальную полосу просмотра.
WS_SYSMENU - окно имеет системное меню.
WS_THICKFRAME - создаваемое окно имеет рамку существенно заметной толщины.
WS_MINIMIZEBOX - окно имеет кнопку минимизации.
WS_MAXIMIZEBOX - окно имеет кнопку максимизации.
Построение меню
Для создания меню нужно проделать:
1. Задать структуру меню в файле ресурсов,
последовательно определив пункты меню в виде текстовых строк.
2. Каждому пункту меню поставить в соответствие
уникальный идентификатор.
3. Указать имя меню в структуре класса окна.
Определение меню
Определение меню в файле ресурсов должно иметь вид:
MenuName MENU [опции загрузки][опции памяти]
BEGIN
MENUITEM "Item1" IDM_Item1 [, опции]
MENUITEM "Item2" IDM_Item3 [, опции]
...
POPUP "Item3" [, опции]
BEGIN
MENUITEM "Item3-1" IDM_Item3-1 [, опции] MENUITEM "Item3-2" IDM_Item3-2 [, опции] ...
END
END
MenuName - имя ресурса меню для обращения из подпрограммы.
Опции загрузки определяет как следует поступить с ресурсом при загрузке приложения на выполнение - сразу загрузить или при неоходимости.
Опции памяти определяют, как Windows должна обращаться с сегментом памяти, куда загружается ресурс.
Пункты меню определяются между словами BEGIN и END. Они могут быть двух видов: MENUITEM и POPUP. Пункт типа MENUITEM является конечным пунктом меню. При выборе этого пункта функции окна сообщения передается сообщение WM_COMMAND с идентификатором пункта меню в качестве параметра. Пункт типа POPUP является заголовком подменю.
Опции пункта меню могут комбинироваться. В качестве опций пункта меню могут быть следующие значения:
GRAYED - пункт меню не активен. Текст пункта меню отображается в сером цвете.
INACTIVE - пункт меню не активен. Текст пункта меню отображается также как и в других пунктах.
MENUBREAK - этот и следующий за ним пункты меню отображаются в новом столбце (если указан для главного меню, то в новой строке).
MENUBARBREAK - этот и следующий за ним пункты меню отображаются в новом столбце (если указан для главного меню, то в новой строке); предыдущий и новый столбец разделяются вертикальной чертой.
CHECKED - пункт меню помечен галочкой, помещенной слева от него. Не действует для пунктов главного меню.
SEPARATOR - определяет разделитель, который выделяет в группы связанные списки меню.
HELP - пункт меню выравнивается по правой стороне меню.
Обьекты диалога
Обьекты диалога, в состав которых входят кнопки, комбинированные блоки, элементы управления редактированием, блоки списков, полосы прокрутки, статические элементы, являются с точки зрения Windows обычными дочерними окнами.
Взаимодействие между родительским окном (окном диалога) и обьектами диалога осуществляется посредством сообщений. Когда пользователь производит какое-либо действие с обьектом диалога, функции окна родителя передается сообщение WM_COMMAND, в качестве параметра wParam которого передается индекс обьекта диалога, а в качестве параметра lParam - специальная дополнительная информация.
Для того, чтобы сконструировать обьект диалога нужно:
1. Зарегистрировать класс окна диалога.
2. Создать дочернее окно функцией CreateWindow, указав зарегистрированный класс окна.
3. В функции окна обьекта диалога определить дескриптор дочернего окна при помощи функции GetParent.
4. По тому или иному действию пользователя уведомлять родительское окно соответствующими сообщениями при помощи функции SendMessage.
Для обьектов диалога как дочерних окон не требуется регистрировать класс окна - в Windows определены стандартные классы окон - обьектов диалога: "button", "edit", "scrollbar", "listbox" и пр.
При использовании стандартных классов Windows для создания обьекта диалога нужно вызвать только функцию CreateWindow.
Рассмотрим основные обьекты диалога.
Кнопки и переключатели
Кнопка "Button" обычно используется для осуществления каких - либо немедленных действий, без переключения или включения/выключения каких-либо опций.
Переключатель "И" ("CheckBox") используется как
переключатель опций вкл/выкл. Будучи соединенными в группу
переключатели реализуют логику "И".
Переключатель "ИЛИ" ("RadioButton") используется как переключатель опций вкл/выкл. Будучи соединенными в группу переключатели реализуют логику "ИЛИ".
Вокруг этих трех основных типов имеются некоторые вариации. Ниже приводится описание стандартных классов кнопок
и переключателей.
BS_PUSHBUTTON - определяет кнопку с жирной рамкой.
BS_DEFPUSHBUTTON - определяет кнопку с жирной рамкой. Обычно используется для определения действия по умолчанию.
BS_CHECKBOX - определяет квадратик, имеющий два
состояния: отмеченное (перечеркнут крестиком) и не отмеченное
(квадратик пуст). В момент отметки рамка квадрата выделяется
жирной линией.
BS_AUTOCHECKBOX - тоже, что предыдущий, только состояние кнопки при отметке отслеживается автоматически.
BS_RADIOBUTTON - определяет круглую кнопку, которая может быть нажата (внутри окружности жирная точка) и отпущена. Справа от кнопки может быть любой поясняющий текст.
BS_AUTORADIOBUTTON - тоже, что и предыдущее, только при отметке кнопки пользователем ранее сделанная отметка автоматически снимается.
BS_3STATE - тоже, что и BS_CHECKBOX, только добавлено состояние, что действие или свойство не действительно (обозначается штриховкой кнопки).
BS_AUTO3STATE - тоже, что и предыдущее, только смена состояний поддерживается автоматически.
BS_GROUPBOX - определяет рамку, охватывающую другие обьекты диалога.
BS_OWNERDRAW - обьект диалога, определяемый
пользователем, который полностью берет на себя работу с ним.
BS_LEFTTEXT - используется для выравнивания
пояснительного текста по левой стороне кнопок.
Кнопки посылают функции окна родителя сообщение
WM_COMMAND,
в качестве параметра lParam указывается дескрипотор органа
управления и код нотификации, служащий для определения того,
какое действие произвел пользователь с кнопкой.
Статические обьекты диалога
Статические обьекты диалога используются для отображения текста и отрисовки оформительских примитивов. Обьекты этого класса могут быть созданы указанием функции CreateWindow имени класса "static". Определены следующие классы статических обьектов:
SS_LEFT - текст, выравненный по левому краю;
SS_CENTER - центрированный текст;
SS_RIGHT - текст, выравненный по правому краю;
SS_ICON - пиктограмма;
SS_BLACKRECT - прямоугольник цвета рамки фона;
SS_GRAYRECT - прямоугольник цвета фона окна;
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10