Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
WinAPI-ekz_shpory.docx
Скачиваний:
5
Добавлен:
25.09.2019
Размер:
185.19 Кб
Скачать

33

  1. Основные компоненты 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 – программы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]