15.3  Структура MFC

Рассмотрим структуру библиотеки MFC. В основе всей иерархии лежит класс CObject, от которого порождаются все остальные объекты MFC. Класс CObject умеет делать не так уж много, в основном он предоставляет производным классам четыре полезные функции:

1) сериализацию – возможность сохранить объект на постоянном носителе и позднее извлечь его оттуда;

2) runtime-информацию класса – возможность узнать во время выполнения программы имя класса для конкретного объекта и его положение в иерархии объектов. VisualC++ версий 4.0 и выше поддерживаются «родные» для языка C++ конструкции RTTI (runtime type information), поэтому эта функциональность присуща всем классам. Возможно, в последующих версиях библиотека MFC изменится, и в ней будет использоваться поддержка RTTI на уровне компилятора;

3) диагностику – организация вывода отладочных сообщений;

4) совместимость – возможность работы с классами-коллекциями MFC.

Классы в библиотеке MFC делятся на шесть основных категорий:

1) общие классы (строки, файлы, исключения, дата/время и прямоугольники);

2) классы визуальных объектов (окна, контексты устройств, объекты GDI и диалоговые окна);

3) классы архитектуры приложений (приложения, документы, виды);

4) классы-коллекции (списки и массивы);

5) классы COM и ActiveX;

6) классы баз данных, организующие доступ к данным через ODBC и, начиная с MFC версий 4.0 и выше, через DAO (Data Access Objects – интерфейс Automation для работы с ядром базы данных Microsoft Jet и другими источниками данных).

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