Понятие API и WinAPI. Назначение WinAPI

Автор: Пользователь скрыл имя, 12 Января 2015 в 14:44, контрольная работа

Краткое описание

API (Application Programming Interface - интерфейс прикладных программ) - это множество функций, организованных, обычно, в виде DLL (Dynamic Link Library – динамически подключаемые библиотеки). Функции API позволяют организовать интерфейс между прикладной программой и средой, в которой работает эта программа. Вызов функций API позволяет программе получать доступ к ресурсам среды и управлять ее работой.

Файлы: 1 файл

Ответы.docx

— 605.65 Кб (Скачать)

1. Понятие API и WinAPI. Назначение WinAPI. Основные библиотеки Win32 и круг решаемых задач.

API (Application Programming Interface - интерфейс прикладных программ) - это множество функций, организованных, обычно, в виде DLL (Dynamic Link Library – динамически подключаемые библиотеки). Функции API позволяют организовать интерфейс между прикладной программой и средой, в которой работает эта программа. Вызов функций API позволяет программе получать доступ к ресурсам среды и управлять ее работой.

Интерфейс программирования в Windows стал называться WinAPI, функции WinAPI позволяют прикладной программе получить доступ к ресурсам ОС и управлять ее работой.

1. Kernel32.dll – работа с объектами ядра ОС, управление памятью и другими системными ресурсами;

2. User32.dll – управление окнами, обработка сообщений, работа с меню, таймерами и т.д.;

3. GDI32.dll – обеспечение работы графического интерфейса ОС (Graphics Device Interface): функции управления выводом на экран дисплея, управление выводом принтера, функции для работы со шрифтами и т.д.

2. Окно, как объект ОС. Основные понятия, свойства. Стандартные классы окон. Создание пользовательского окна.

Окно является основным системным объектом ОС Windows. Окно обеспечивает взаимодействие приложения с пользователем, другими приложениями и самой ОС.

 «Классическое»  окно состоит из строки заголовка  со значком, кнопками свертывания, развертывания/восстановления и  закрытия окна. Однако окна отнюдь  не ограничиваются подобным классическим  видом.

Как правило, под «окном» обычный пользователь ОС понимает нечто прямоугольное, содержащее различные кнопки и прочие элементы управления*. На самом деле, с точки зрения WinAPI между элементами управления не делается никакой разницы – все они являются окнами ОС.

* Элементы  управления – это объекты, которые  служат для организации интерфейса  между пользователем и программой. Например, кнопки, радио–кнопки, списки, переключатели, текстовые поля, надписи, полосы прокрутки, выпадающие списки и т.д. Таким образом, они являются составной частью интерфейса пользователя – User Interface (UI).

 

Стандартные классы окон:

• Edit (текстовое поле)

• ListBox (список)

• ComboBox  (выпадающий список)

• ScrollBar (полоса прокрутки)

• Button (кнопка)

• Static (надпись)

 

Создание custom-окна (пользовательского окна)

Для того чтобы определить собственное окно и отобразить его на экране, необходимо выполнить ряд этапов:

• Определить класс окна

o определить визуальные свойства окна

o определить процедуру (функцию) окна

• Зарегистрировать класс окна

• Создать окно и получить его дескриптор

• Отобразить окно на экране

• Запустить цикл обработки сообщений

 

3. Сообщение. Очередь сообщений. Цикл обработки сообщений и процедура обработки сообщений.

 

Сообщение – это уведомление о некотором событии. Источником события: пользователь, ОС, другое окно.

 

Очередь сообщений

Во время работы ОС в ней может возникать множество событий. При этом каждое событие обязательно должно быть обработано. События, которые ОС не «успевает» обрабатывать, встают в так называемую очередь сообщений. Очередь сообщений устроена по принципу FIFO (First In First Out).

 

Цикл обработки сообщений

Производит чтение очередного сообщения из очереди сообщений, при каждой итерации. Приложению постоянно нужно считывать из очереди сообщений те сообщения, которые адресованы именно ему.

 

Процедура обработки сообщения:

Для того чтобы прочитать сообщение из очереди, следует вызвать функцию GetMessage(). Если данная функция возвращает значение, равное нулю, то это означает, что цикл должен быть прерван. В случае если при чтении из очереди сообщений произошла ошибка, данная функция вернет -1. Во всех остальных случаях результатом чтения должно быть положительное число.

 

4. Дочерние окна и диалоги.

5. Главная функция приложения. Отличие оконного и консольного приложения.  Загрузка неуправляемого исполняемого модуля в оперативную память.

 

Главная функция приложения

Стандартная точка входа во все программы Windows. Главная функция приложения получает управление при запуске приложения, выполняет присущие обычным функциям действия, регистрирует классы окон, создает окна, опрашивает очередь сообщений и распределяет свои сообщения.

 

Отличие оконного (GUI) и консольного приложения

Оконные приложения ресурсоемкие, чем консольные. В оконных приложениях ввод-вывод осуществляется через графический интерфейс. В консольных приложениях ввод-вывод осуществляется через потоки ввода и вывода.

 

Загрузка неуправляемого исполняемого модуля в оперативную память:

- Открывается файл образа (EXE), который будет выполняться  в процессе.

- Создается объект «процесс»  исполнительной системы.

- Создается первичный  поток (стек, контекст и объект  «поток» исполнительной системы).

- Уведомление о создании нового процесса и потока.

- Выполнение первичного потока (если не указан флаг CREATE_ SUSPENDED).

- Инициализация адресного пространства в контексте нового процесса и потока(например, загружаются требуемые DLL).

- Выполнение программы.

6. Понятие и назначение GDI. Логическое устройство. Контексты устройства для работы с окнами и их отличия между собой. Совместимый контекст устройства (CreateCompatibleDC).

 

Graphics Device Interface (GDI) – это интерфейс представления графических объектов и передачи их на устройства отображения. Отвечает за отрисовку линий и кривых, отображение шрифтов и обработку палитры.

 

Контекст устройства – это структура данных, служащих для управления информацией о выходном устройстве. Она содержит информацию о параметрах и атрибутах вывода графики на устройство.

 

Для вывода графической информации необходимо создать объект логического устройства (прототип физического), в который и будет осуществляться весь вывод. Логическое  устройство, как и все объекты ОС, имеет ряд атрибутов (параметров) и методов (функций). Меняя значения атрибутов, мы можем влиять на результат работы методов. Объект логического устройства называют контекстом устройства (или контекстом отображения), а его уникальный номер – дескриптором контекста устройства.

 

Контексты устройства для работы с окнами:

Вывод только в рабочей области окна

  • Общий
  • Для класса окон
  • Личный
  • Родительский

Контекст отображения для окна позволяет рисовать в любом месте окна – в области заголовка, системного меню, рамок, кнопок изменения размеров окна, рабочей области и т.д.

Для окна

 

Контекст устройства в памяти (или совместимый контекст) позволяет системе работать с указанным виртуальным устройством, осуществляет вывод на виртуальное графическое устройство, имитируемое в памяти в виде растра.

 

7. Сообщение WM_PAINT. Недействительная область окна. Вывод графики средствами GDI.

 

Если возникает необходимость в перерисовке определенной области окна, в очередь сообщений потока-владельца окна поступает сообщение WM_PAINT. Область, которая требует обновления, называется недействительной (invalid rectangle) и определяется, как наименьшая прямоугольная часть окна, которая должна быть перерисована заново.

 

Для вывода графической информации необходимо создать объект логического устройства (прототип физического), в который и будет осуществляться весь вывод. Логическое  устройство имеет ряд атрибутов (параметров) и методов (функций). ОС не предоставляет прямой ссылки на объект логического устройства, а отдает только его дескриптор (уникальный номер).

8. Понятие ресурсов. Основные типы ресурсов и их назначение. Пользовательский тип ресурсов. Процесс компиляции ресурсов. (В презентации назначения)

 

Ресурсы – блок данных, который может содержаться в исполняемом модуле. Ресурсы загружаются в оперативную память вместе с кодом модуля в адресное пространство процесса.

 

Основные типы ресурсов:

• Значки (Icons)

• Курсоры (Cursors)

• Битовые образы (Bitmaps)

• Символьные строки (Character strings)

• Меню (Menus)

• Быстрые комбинации клавиш (Accelerators)

• Окна диалога (Dialog Boxes)

• Пользовательские (Custom)

 

Пользовательские ресурсы

• Используются для хранения пользовательских данных

• Расширяют возможности ресурсов

• Обработка пользовательских типов ресурсов полностью ложится на плечи разработчика

 

Компиляция ресурсов

При создании программы ресурсы определяются в файле описания ресурсов (resource script), который представляет собой текстовый файл (в ASCII-кодировке) с расширением .RC. Файл описания ресурсов может содержать представление ресурсов в ASCII-кодах, а также может ссылаться и на другие файлы (ASCII или бинарные файлы), в которых содержатся остальные ресурсы. С помощью компилятора файл описания ресурсов компилируется и становится бинарным файлом с расширением .RES. После этого компоновщик объединяет объектный файл с кодом программы и ресурсы, таким образом, формируя исполняемый файл.

 

9. Диалоговые окна. Модальные и немодальные диалоги. Особенности диалогов. Функция обработки сообщений окна диалога, ее отличия от процедуры окна. Примеры стандартных диалогов.

 

Диалоговые окна служат для обеспечения обмена информацией между пользователем и приложением.

 

Типы диалоговых окон

• Модальные (modal)

блокирует прочие окна приложения до тех пор, пока не будет закрыто

• Не модальные (modeless)

не блокирует окна приложения

 

Функция обработки сообщений окна диалога:

BOOL CALLBACK DlgProc (

HWND hWndDlg,  // дескриптор окна диалога

UINT message,  // ID сообщения

WPARAM wParam, // параметры сообщения

LPARAM lParam )

    • Подобна функции обычного окна, за исключением некоторых функциональных особенностей

 

Отличия от процедуры окна

  • TRUE возвращается для обработанных сообщений, а FALSE – для необработанных
  • DefWindowProc() для необработанных сообщений НЕ вызывается
  • НЕ обрабатывает сообщения WM_CREATE, WM_PAINT, WM_DESTROY
  • Основные сообщения:

  WM_INITDIALOG

  WM_COMMAND

  • Диалог создается и отображается вызовом одной функции
  • Цикла обработки сообщений у диалогов НЕТ

 

Примеры стандартных диалогов:

  • Диалог открытия файла
  • Диалог сохранения файла
  • Диалог выбора цвета
  • Диалог выбора шрифта
  • Диалог выбора папки

 

 

 

 

10. Объект ядра. Основные свойства объектов ядра.

 

Объект ядра — блок памяти, выделенный ядром и доступный только ему. Этот блок представляет собой структуру данных, в элементах которой содержится информация об объекте. Объекты ядра в основном применяются для их совместного использования несколькими процессами (или потоками).

 

Доступ к объектам ядра осуществляется через их дескрипторы с использованием WinAPI функций.

Объект ядра будет удален только в том случае, если его не использует ни один процесс.

 

Типы объектов ядра:

• Процессы (Process)

• Потоки (Thread)

• Файлы (File)

• Проекции файлов (File-mapping)

• Порты завершения ввода-вывода (I/O completions port)

• Задания (Job)

• Маркеры доступа (Access token)

• Каналы (Pipe)

• Почтовые ящики (Mail-slot)

• Мьютексы (Mutex)

• Семафоры (Semaphore)

• Ожидаемые таймеры (Waitable timer)

 

Общие свойства объектов ядра

• Дескриптор – служит для уникальной идентификации объекта ядра

• Идентификатор процесса – содержит идентификатор процесса, создавшего данный объект

• Дескриптор защиты – определяет права доступа к данному объекту

11. Процессы и потоки. Вытесняющая многозадачность. Жизненный цикл процессов и потоков (на примере однопоточного приложения рассмотреть, как создаются, инициализируются и используются данные объекты).

 

ПРОЦЕСС –экземпляр выполняемой программы, который состоит из двух компонентов:

  • Объекта ядра «Процесс», через который ОС управляет процессом, и который хранит информацию о процессе
  • Адресное пространство ОП, в котором содержится код и данные всех EXE- и DLL-модулей

ПОТОКИ – отвечают за исполнения кода, содержащегося в адресном пространстве процесса

  • Процессы инертны, то есть, чтобы процесс что-нибудь выполнил, в нем нужно создать поток. Именно потоки отвечают за исполнение кода, содержащегося в адресном пространстве процесса.
  • При создании процесса первый (точнее, первичный) поток создается системой автоматически. Далее процесс может порождать другие (дочерние) процессы и потоки, а те в свою очередь – новые и т.д. То есть один процесс может иметь несколько дочерних, в пределах каждого процесса может существовать несколько потоков.

 

Многозадачность подразумевает конкурентный доступ к разделяемому ресурсу. Одним из таких ресурсов является процессорное время. В связи с этим существует два основных подхода распределения процессорного времени: централизованный и децентрализованный. Первый предполагает наличие централизованного механизма управления задачами – диспетчера задач. Децентрализованный подход подразумевает, что каждая выполняемая программа самостоятельно контролирует время доступа к ресурсу, при освобождении ресурса управление передается следующей в очереди программе.

Стратегия планирования с использованием диспетчера задач получила название вытесняющая многозадачность.

Информация о работе Понятие API и WinAPI. Назначение WinAPI