Шаг 13.
Среда программирования Visual C++.
MFC и Win32 API

    На этом шаге мы дадим краткую характеристику MFC и Win32 API.

    Библиотека MFC (Microsoft Foundation Classes) - это набор классов C++ и глобальных функций, созданных для быстрой разработки Windows-приложений. Эта библиотека упрощает программирование под Windows и сокращает время разработки. Код, созданный с ее использованием, легко переносить на другие платформы. Библиотека MFC упрощает решение таких сложных задач, как создание приложений, ориентированных на технологию ActiveX или на Интернет. С ее помощью легко программировать элементы интерфейса - предварительный просмотр документов перед печатью, страницы свойств, контекстные меню и настраиваемые панели инструментов с всплывающими подсказками.

    Общий для всех 32-разрядных Windows-платформ интерфейс прикладного программирования (Application Programming Interface, API) называется Win32. Win32 API - это набор функций, структур, сообщений, макросов и интерфейсов, с помощью которых можно создавать программы для Win32. В таблице 1 перечислены некоторые возможности, предоставляемые Win32 API.

Таблица 1. Возможности Win32 API
Возможность Win32 API Описание
Window Management (управление окнами)
Обеспечивает средства создания и управления пользовательским интерфейсом
Window Controls (элементы управления)
Предоставляет набор общих элементов пользовательского интерфейса. Их применение приводит к единому виду интерфейсы оболочки и остальных приложений, а также сокращает время разработки
Shell Features (функции оболочки)
Обеспечивает доступ к системным объектам и ресурсам - файлам, дисководам, принтерам и сетевым ресурсам
Graphics Device Interface (интерфейс графических устройств)
Содержит функции и структуры, используемые для графического вывода на дисплеи, принтеры и другие графические устройства
System Services (системные службы)
Обеспечивают доступ к ресурсам компьютера посредством функций операционной системы

    Так как Win32 API - это набор С-функций, их можно использовать в своей программе, просто включив в код соответствующий заголовочный файл. До появления MFC Windows-программы применяли только средства Win32 API, так что разработка занимала много времени. Опытные программисты старались ускорить ее, создавая библиотеки с кодом основных, часто используемых функций. С появлением MFC такие библиотеки стали доступны всем, кто пишет программы на C++.

    Классы MFC, инкапсулирующие основные функции Win32 API, упрощают и ускоряют разработку Windows-приложений. Эти классы реализуют сложные функции, скрывающиеся за понятным и компактным интерфейсом.

    Например, концепция окна представлена классом MFC CWnd. Другими словами, класс CWnd инкапсулирует описатель HWND, определенный в Win32 тип данных, содержащий сведения об окне. Это значит, что в классе CWnd есть переменная-член типа HWND, а его функции-члены замещают те функции Win32 API, которым HWND передается в качестве параметра. Например, такая функция Win32 API:

    BOOL ShowWindow(HWND hWnd, int nCmdShow);
заменена в MFC на
   BOOL CWnd::ShowWindow(int nCmdShow);

    Функции-члены классов библиотеки MFC и заменяемые ими функции Win32 API обычно называются одинаково.

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

    Библиотека MFC подходит для создания любых приложений, кроме самых простых. Однако даже для таких программ весьма полезны некоторые классы этой библиотеки, например строковые или классы наборов.

    В MFC представлены не все функции Win32 API, поэтому иногда требуется их прямой вызов. Это необходимо только при низкоуровневом доступе к системе. Например, если Вы разрабатываете утилиту, изменяющую учетную запись пользователя в сети, Вам придется применять сетевые функции Win32 API, так как в MFC нет классов, обеспечивающих доступ к таким функциям.

    На следующем шаге мы рассмотрим иерархию классов MFC.




Предыдущий шаг Содержание Следующий шаг