- •Основные компоненты 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), компиляция
Основные компоненты windows – программы (.Cpp, .H, .Res, .Rc, .Def), компиляция.
Файл .cpp содержит исходный текст функций приложения.
Файл .h – заголовочный файл, содержит заголовки или прототипы функций. Файл windows.h должен включаться во все исходные файлы приложений Windows. Он содержит определение типов данных, символических имен констант и прототипы функций программного интерфейса Windows. Также в файле windows.h описаны типы данных, например BYTE, WORD, UINT и др и их производные. Структуры, например типа MSG. Коды сообщений определены в файле windows.h, например WM_CREATE.
Файл .def – файл определения модуля. Дает компоновщику сведения о работе многомодульной программы.
Файл определения модуля.
Первая строка необходима для 16-битных приложений, для 32-битных не нужна.
EXETYPE WINDOWS
Директива CODE имеет следующий синтаксис:
CODE
[FIXED | MOVEABLE]
[DISCARDABLE | NONDISCARDABLE]
[PRELOAD | LOADONCALL]
Опции означают: сегмент фиксированной длины, сегмент может быть перемещён в памяти, может быть выгружен, не может быть выгружен, загружается в память при запуске приложения, загружается при обращении к некоторому его элементу.
Директива DATA имеет следующий синтаксис:
DATA
[NONE | SINGLE | MULTIPLE]
[READONLY | READWRITE]
[PRELOAD | LOADONCALL]
[SHARED | NONSHARED]
Опции означают: сегмент данных отсутствует, 1 сегмент, разделяемый всеми процессами, несколько сегментов данных, данные в сегменте можно читать, но не изменять, можно читать и изменять, сегмент заранее автоматически загружается в память, загружается при обращении к нему, одна копия сегмента разделяется всеми процессами, отдельная копия сегмента загружается для каждого процесса.
Директивы HEAPSIZE и STACKSIZE устанавливают размер локальной динамической памяти и стека программы.
Директива STUB вставляет в файл .EXE кода для WINDOWS программу DOS.
Пример:
EXETYPE windows // для 16 бит
STACKSIZE 5120 // Размер стека в байтах
HEAPSIZE 1024 // Размер локальной динамической памяти в байтах
CODE preload moveable discardable // Атрибуты сегмента кода (что делать с прогой)
DATA preload moveable multiple // Атрибуты сегмента данных
загружается в память при запуске приложения, сегмент может быть перемещён в памяти,
а) может быть выгружен, б) сегмент, разделяемый всеми процессами
Файлы .rc и .res. Файл описания ресурсов (кисти, пиктограммы, шрифты…) имеет расширение .rc. Его необходимо включить в проект приложения наряду с файлами исходных текстов и файлом определения модуля. В процессе сборки загрузочного модуля файл описания ресурсов компилируется и преобразуется в двоичный файл с расширением имени .res. На финальном этапе сборки загрузочного модуля компилятор ресурсов rc.exe вызывается еще раз для записи ресурсов в загрузочный модуль.
Схема создания Windows-программы:
Исходные файлы программы на языке Си компилируются в объектные файлы. Компоновщик собирает приложение и библиотечные файлы с помощью заголовочного файла, который служит для согласования типов и имён переменных и др. объектов.
Файл определения модуля определяет, какие операции разрешены с данными и кодом программы.
Последним шагом является связывание двоичного файла ресурсов (RES) и программного файла (ЕХЕ) в единый Windows - выполнимый файл (ЕХЕ). Для этого снова используется компилятор ресурсов. Эта команда является последней при создании Windows – программы.