
- •Основные компоненты windows – программы (.Cpp, .H, .Res, .Rc, .Def), компиляция.
- •Файл определения модуля.
- •Структура windows – программы.
- •Структура программы в Windows:
- •Сообщения. Источники сообщений
- •Формирование сообщений, примеры. Очереди.
- •Сообщения. Цикл сообщений, основные компоненты.
- •Сообщения. Структура сообщений на примере wm_command
- •Структура msg. Обработка сообщений.
- •Средства обработки сообщений в приложении и windows.
- •Окна, классы и типы окон.
- •Регистрация класса окна, основные элементы класса.
- •Int cbClsExtra; // 3. Доп. Память для окон, созд-мых на базе данного класса
- •Int cbWndExtra; // 4. Доп. Память для создания окна (3, 4 – в байтах)
- •Линейки прокрутки, переключатели, окна пометки, окна списка.
- •1. Кнопки, переключатели (переключатели – кнопки с 3-мя состояниями (вкл, выкл и неактивен)
- •2. Полосы прокрутки.
- •3. Окна списка
- •Комбинированные списки, окна редактирования и статические текстовые объекты.
- •1. Комбинированные списки
- •2. Окна редактирования
- •3. Статический орган управления (статический текстовый объект)
- •Способы создания меню
- •Создание меню в файле ресурсов
- •С помощью функций в теле программы
- •Создание меню редактором ресурсов
- •Определение диалоговой панели, взаимодействие пользователя с панелью.
- •1. Создание шаблона.
- •2. Создание функции диалога.
- •3. Вызов одной из функций создания диалога
- •Диалоговые панели, модальные панели.
- •Немодальные панели. Отличие циклов сообщений.
- •Ресурсы. Файл ресурсов, текстовый, бинарный. Создание.
- •Файл определения модуля. Назначение, основные директивы (относящиеся к коду и данным).
- •Графический приборный интерфейс gdi. Состав, назначение.
- •Контекст, содержание контекста.
- •Общий контекст, родительский, личный, для класса окна, физический.
- •1. Общий контекст отображения.
- •2. Контекст отображения для класса окна
- •3. Личный контекст отображения
- •4. Родительский контекст отображения
- •5. Контекст физического устройства
- •Последовательность действий приложения при формировании рисунка
- •Преобразование логических координат в физические и наоборот, единицы измерений, масштабирование.
- •Назначение и состав структуры paintstruct. Сообщение wm_paint.
- •Int right; х-коор-та нижнего правого угла
- •Int bottom; y-коор-та
- •Дополнительные темы.
- •Аппаратная независимость
- •Основные компоненты windows – программы (.Cpp, .H, .Res, .Rc, .Def), компиляция
Создание меню редактором ресурсов
Для создания меню данным образом необходимо воспользоваться редактором Resourse WorkShop.
Определение диалоговой панели, взаимодействие пользователя с панелью.
Диалоговые панели – это предопределенный в Windows класс окон (dialog window class), на базе этого класса создаются временные (pop-up) окна (иногда перекрывающиеся (overlapped) окна), на их поверхности располагаются дочерние окна - органы управления. Диалоговые панели значительно упрощают использование органов управления, так как функция окна, соответствующая классу диалоговых панелей и расположенная внутри Windows, обеспечивает как взаимодействие органов управления между собой, так и их взаимодействие с приложением. В частности, эта функция обеспечивает передачу фокуса ввода от одного органа управления к другому при помощи клавиши <Tab> и клавиш перемещения курсора <Up> и <Down>, выполняет обработку сообщений от клавиш <Enter> и <Esc>.
Расположение органов управления на диалоговой панели задается 3 способами:
В файле ресурсов задается текстовое описание шаблона диалоговой панели
Использование специальных редакторов
Создание шаблона диалоговой панели в памяти во время работы приложения (редко)
Для создания диалоговой панели вы должны предпринять следующие действия:
- создать шаблон диалога;
- определить функцию диалога;
- вызвать одну из функций создания диалога.
1. Создание шаблона.
nameID DIALOG [load] [mem] x, y, width, height
CAPTION "Заголовок диалоговой панели"
STYLE Стиль
BEGIN
. . .описание органов управления
END
nameID – для идентификации шаблона (строка, число от 1 до 65535).
[load] – необязательный; определяет момент загрузки меню в память. (PRELOAD – загрузка сразу после запуска приложения, LOADONCALL – загрузка только при отображении)
[mem] – необязательный; влияет на тип памяти, выделяемой для хранения шаблона (FIXED, MOVEABLE, DISCARDABLE – не перемещаемый, перемещаемый (по умолчанию), освобождаемый).
STYLE - DS_MODALFRAME – модальная диалоговая панель, DS_SYSMODAL – системная модальная диалоговая панель, DS_LOCALEDIT – редакторы будут использовать память из сегмента данных приложения, DS_NOIDLEMSG – если этот стиль не указан, то при переходе панели в видимое состояние Windows посылает родительскому окну сообщение WM_ENTERIDLE., а также стили при работе с окнами.
Перед BEGIN можно вставить а) CLASS "PrivateDlgClass" – диалоговая панель будет создана на основе собственного класса, а не Windows; б) Font 10, “MS Serif” – сменить шрифт
В диалоговых панелях используется своя система единиц – чтобы диалоговая панель выглядела одинаково при разлиных разрешениях! Ширина=1/4 средней ширины системного шрифта, высота=1/8, это диалоговая единица, ее можно определить (0,35 мм - Европа, 0,376 мм):
DWORD WINAPI GetDialogBaseUnits(void); (младшее слово – ширина, старшее – высота)
Описания органов управления – используются три формата строк.
1) CtlType "Текст", ID, x, y, width, height [,style] - для всех, кроме списков, редакторов текста и полосы просмотра:
CtlType - обозначение органа управления.
Параметр "Текст" определяет текст, который будет написан на органе управления.
Параметр ID - идентификатор ОУ, передается вместе с сообщением WM_CONTROL.
x и y - координаты органа управления
width и height - ширина и высота органа управления в единицах длины dialog unit.
Параметр style определяет стиль органа управления (необязательный параметр). Это тот самый стиль, который указывается при вызове функции CreateWindow.
2) CtlType ID, x, y, width, height [,style] – для описания списков, редакторов текста и полос просмотра:
В этом формате нет параметра "Текст", остальные параметры такие же, как и в первом формате.
3) CONTROL "Текст", ID, class, style, x, y, width, height – универсальный (для любых органов управления)
Этот формат позволяет описать орган управления, принадлежащий классу class, который указывается в виде строки символов. Можно использовать для описания предопределенных классов органов управления, таких как "button", "combobox", "edit", "listbox", "scrollbar", "static".