Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции-ТРПС.doc
Скачиваний:
13
Добавлен:
15.11.2018
Размер:
810.5 Кб
Скачать

5.2.15. Другие api

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

  1. API общих элементов управления используются для работы с новыми Win32 элементами управления, расширяющими множество стандартных элементов управления Windows.

  2. API общих диалоговых окон содержит стандартные диалоговые окна для открытия файла, выбора цвета, выбора шрифта, определения операций поиска или замены.

  3. MAPI (messaging applications programming interface – интерфейс программирования приложений на основе сообщений) предоставляет приложениям доступ к функциям сообщений через системы доставки почты типа Microsoft Mail.

  4. MCI (multimedia control interface) предоставляет собой интерфейс управления средствами мультимедиа. Через функции MCI приложения могут получить доступ к видео-, аудио- и MIDI-возможностям Windows.

  5. COM API – богатый набор системных вызовов, реализующих все аспекты функциональных возможностей OLE. К ним относятся функции контейнера и сервера OLE, активизации объектов, технологии “drag and drop”, а также элементы управления ActiveX.

  6. TAPI – это телефонный API. Приложения могут использовать TAPI для аппаратно-независимого доступа к телефонным ресурсам: модемам, факс-модемам, устройствам речевых сообщений.

  7. Группа API для поддержки сетевых возможностей – WinSock, WinInet, RAS и RPC.

6. Структура Windows приложений

Рассмотрим структуру простейшего Windows приложения.

#define STRICT #define WIN32_LEAN_AND_MEAN (1) #include <Windows.h>

(2) HINSTANCE g_hInst; LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

(3) int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { (4) LPCTSTR szClass = “qwerty”; LPCTSTR szTitle = “Simplest”; g_hInst = hInstance;

(5) WNDCLASS wc; wc.lpfnWndProc = WndProc; wc.lpszClassName = szClass; wc.hInstance = g_hInst;

if (!RegisterClass(&wc)) return -1;

(6) HWND hWnd = CreateWindowEx( WS_EX_OVERLAPPEDWINDOW, szClass, szTitle, WS_OVERLAPPEDWINDOW, 0, 0, 100, 100, NULL, NULL, g_hInst, NULL); if (!hWnd) return -1;

(7) ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd);

(8) MSG msg; while (GetMessage(&msg, NULL, 0, 0)) DispatchMessage(&msg);

return 0; } // end of WinMain()

//======================================================== (9) LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_DESTROY : PostQuitMessage(0); return 0; }

return DefWindowProc(hWnd, message, wParam, lParam); } // end of WndProc()

Итак, мы имеем С++ код Windows приложения, который вы можете откомпилировать и запустить на исполнение. Программа будет отображать на экране главное окно и ... ничего более. На данном этапе этого достаточно, поскольку наша задача сейчас – разобраться в структуре Windows приложений, понять как они работают, как взаимодействуют с операционной системой. Кроме того, такая жесткая структура повторяется во всех, даже самых сложных Windows программах.

Легко заметить, что организационно приложение состоит из двух функций: WinMain() и WndProc(). Первая является точкой входа в Windows приложение (вспомните функцию main() для DOS), а вторая – функция окна приложения. Ее имя не имеет значения, поскольку мы будем передавать Windows ее адрес, а не имя, но традиционно ее называют WndProc.

Теперь проведем пошаговый разбор того, что происходит в нашем приложении.