Классы CObject и CRuntimeClass инкапсулируют несколько служб объектов, включая доступ к информации во время класса, сериализация и создание динамических объектов. Все классы, производные от CObject наследуют эту функциональность.
Доступ к информации класса во время выполнения позволяет определить сведения о классе объекта во время выполнения. Возможность определить класс объекта во время выполнения является полезным, когда требуется дополнительная проверка типов аргументов функции, и когда необходимо написать код специального назначения, основанный на классе объекта. Сведения класса во время выполнения не поддерживается непосредственно на языке C++.
Сериализация — это процесс запись или чтение содержимого объекта в или из файла. Сериализацию можно использовать для хранения содержимого объекта даже после выхода из приложения. Затем объект можно прочитать из файла после перезапуска приложения. Такие объекты данных как говорят, «постоянные».
Создание динамических объектов позволяет создавать объект заданного класса во время выполнения. Например документ, просматривать и объекты frame должны поддерживать динамическое создание потому что рамки для динамического создания.
В следующей таблице перечислены в поддержку информацию во время класса, сериализация и динамическое создание макросов MFC.
Для получения дополнительных сведений об этих служб объектов во время выполнения и сериализации, см. статью классе CObject: доступ К информации класса во время выполнения в Руководстве по Visual C++ программист.
Во время выполнения объекта модели служб макросов
| DECLARE_DYNAMIC | Обеспечивает доступ к информации во время класса (должны быть использованы в объявлении класса). |
| DECLARE_DYNCREATE | Обеспечивает динамическое создание и доступ к информации во время класса (должны быть использованы в объявлении класса). |
| DECLARE_SERIAL | Позволяет выполнять сериализацию и доступ к информации во время класса (должны быть использованы в объявлении класса). |
| IMPLEMENT_DYNAMIC | Обеспечивает доступ к информации во время класса (необходимо использовать в реализации класса). |
| IMPLEMENT_DYNCREATE | Обеспечивает динамическое создание и доступ к информации времени выполнения (необходимо использовать в реализации класса). |
| IMPLEMENT_SERIAL | Разрешает сериализации и доступ к информации во время класса (необходимо использовать в реализации класса). |
| RUNTIME_CLASS | Возвращает структуру CRuntimeClass , соответствующего именованному классу. |
OLE часто требует динамического создания объектов во время выполнения. Например приложение OLE сервера должны иметь возможность создавать элементы OLE динамически в ответ на запрос от клиента. Аналогично сервер автоматизации должен иметь возможность создания элементов в ответ на запросы от клиентов автоматизации.
Библиотека классов Microsoft Foundation предоставляет два конкретных макросов OLE.
Динамическое создание объектов OLE
| DECLARE_OLECREATE | Позволяет объектам создать с помощью автоматизации OLE. |
| IMPLEMENT_OLECREATE | Позволяет объектам быть создан системой OLE. |