- •Лабораторный практикум «Основы разработки приложений Windows» Книга 2
- •Часть 1. Теоретические сведения4
- •Часть 2. Лабораторный практикум73
- •Часть 1 Теоретические сведения
- •1. Основы архитектурЫ защищенного режима Регистры процессора
- •Адресация памяти
- •2. Логические шрифты Создание логических шрифтов
- •Вывод на экран текстовых строк
- •3. Таймеры Windows Организация и обслуживание таймеров
- •Мультимедийные таймеры
- •Измерение интервалов времени
- •Организация периодического процесса
- •Задание однократного интервала времени
- •4. Дочерние окна Создание и использование дочерних окон
- •Окна предопределенных классов в главном окне
- •5. Вывод растровых изображений
- •Процедура вывода растрового изображения
- •Компоновка составных изображений
- •6. Обслуживание файлов в 32-разрядных приложениях Windows
- •Базовые операции с файлами Открытие и создание файла
- •Запись и чтение файла
- •Файлы, проецируемые в память
- •7. Процессы и потоки
- •Создание дочернего процесса
- •Создание дочернего потока
- •Синхронизация потоков Общие характеристики объектов Windows
- •Синхронизация с помощью состояний потока
- •Синхронизация с помощью событий
- •Критические секции и защита данных
- •8. Библиотеки динамической компоновки
- •Часть 2 Лабораторный практикум Работы лабораторного практикума Работа 1. Создание логических шрифтов
- •Работа 2. Таймеры Windows(индивидуальное задание а)
- •Работа 3. Дочернее окно в главном окне приложения
- •Работа 4. Вывод растровых изображений с использованием совместимой памяти
- •Работа 5. Измерение временных характеристик программы с помощью мультимедийного таймера
- •Работа 6. Вывод движущихся изображений с синхронизацией от системного таймера (индивидуальное задание b)
- •Работа 7. Повышение качества движущихся изображений с помощью совместимой памяти
- •Работа 8. Движение изображения по фоновому рисунку
- •Работа 9. Работа с файлами (индивидуальное задание c)
- •Работа 10. Стандартные диалоги Windows для работы с файлами
- •Работа 11. Проецирование файла в память
- •Работа 12. Потоки (индивидуальное задание d)
- •Работа 13. Синхронизация потоков с помощью событий
- •Работа 14. Защита данных с помощью критической секции
- •Работа 15. Библиотеки динамической компоновки
- •Работа 16. Передача параметров в функции dll-библиотек
- •Индивидуальные задания лабораторного практикума
- •Задание c2.Массив записываемых в файл данных должен представлять собой последовательный ряд из 2000 целых четных чисел.
- •Лабораторный практикум «Основы разработки приложений Windows» Книга 2
8. Библиотеки динамической компоновки
Библиотеки динамической компоновки, или динамически подключаемые библиотеки, которые обычно сокращенно называют DLL-библиотеками или простоDLL(отDynamicLinkLibrary) можно смело назвать краеугольным камнем операционной системы Windows. Все функции обслуживания 32-разрядных приложений содержатся в таких библиотеках; прежде всего это файлыKERNEL32.EXE(управление памятью, потоками и процессами),USER32.DLL(поддержка интерфейса пользователя) иGDI32.EXE(графика и вывод текста).
DLL-библиотеки содержат программы общего пользования, т. е. фактически подпрограммы, используемые многими (или всеми) загружаемыми приложениями. При обычной, не динамической компоновке все подпрограммы, в которых нуждается данное приложение, подсоединяются к основной программе и входят в состав ее выполнимого файла. Если некоторая подпрограмма нужна многим приложениям, то ее коды размножаются, повторяясь во всех скомпонованных приложениях. Такая система приводит к увеличению объемов загрузочных файлов и крайне неэффективному использованию памяти компьютера.
Суть использования DLL-библиотек заключается в следующем. Все функцииDLL-библиотек находятся в памяти в одном экземпляре. При компоновке приложения в его загрузочный файл включаются не коды требуемых функций, а лишь их имена вместе с именами содержащих ихDLL-библиотек. В процессе загрузки приложения в память система проецирует кодыDLLна адресное пространство выполняемого процесса. В этом случае связь приложения сDLL-библиотекой сохраняется на все время выполнения приложения; такая процедура носит название неявного или статического подключения.
В целях оптимизации используемых ресурсов приложение может пойти дальше, организовав загрузку библиотеки (фактически проецирование DLLна свое адресное пространство) в нужный момент по ходу своего выполнения. Когда необходимость в функцияхDLLотпадет, приложение может выгрузить библиотеку, освободив свое адресное пространство. Такая процедура носит название динамического подключения (динамической загрузки).
Необходимость разработки прикладных DLL-библиотек возникает в тех случаях, когда в сложном программном комплексе, включающем в себя много отдельных программ (например, приема, обработки и сохранения данных, их графического отображения в разных видах и т. д.) какие-то его элементы имеют общий характер и должны использоваться многими составляющими комплекса. Оформление этих элементов в виде функцийDLL-библиотек позволяет сократить объем программного обеспечения и повысить эффективность его функционирования.
Создание собственной DLL-библиотеки не составляет особого труда. Современные интегрированные среды разработки (BorlandC++,MicrosoftVisualStudioи др.) имеют в своем составе средства подготовки как обычных выполнимых программ, так и библиотек динамической компоновки. Фактически оформление некоторой прикладной функции в виде элементаDLL-библиотеки сводится к установке соответствующих флажков при создании проекта, в котором данная функция будет компилироваться.
Статическое подключение DLL-библиотеки к приложению осуществляется также на этапе создание проекта, в котором компилируется и отлаживается данное приложение. Динамическое же подключение требует включения в текст приложения функций загрузки и выгрузкиDLL-библиотеки.
Техника создания и использования прикладных DLL-библиотек описана в соответствующих лабораторных работах данного пособия.