C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 219 - IMPLEMENT_DYNCREATE и DECLARE_DYNCREATE / MFC шаг за шагом / Visual C++

Шаг 219 - IMPLEMENT_DYNCREATE и DECLARE_DYNCREATE

Используется для динамического создания объекта. Например, когда Вы читаете объект с диска. Кроме того у Вас появляется возможность создания объекта без использования оператора new, а пользуясь функцией CreateObject класса CRuntimeClass.

DECLARE_DYNCREATE( имя класса )
IMPLEMENT_DYNCREATE( имя класса,имя класса родителя )
// Фактическое название без кавычек

В описании класса указываем макрокоманду DECLARE_DYNCREATE, а в реализации IMPLEMENT_DYNCREATE. Вот так:

class CMyObject : public CObject
{
protected:
	DECLARE_DYNCREATE(CMyObject)
};

IMPLEMENT_DYNCREATE(CMyObject,CObject);

Так как для динамического создания необходима информация о типе класса, то макросы DECLARE_DYNAMIC и IMPLEMENT_DYNAMIC определяются внутри DECLARE_DYNCREATE и реализации IMPLEMENT_DYNCREATE - это абсолютно логическое утверждение подтверждено и в исходном коде.

#define IMPLEMENT_DYNAMIC(class_name, base_class_name) \
	IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, 0xFFFF, NULL)


#define IMPLEMENT_DYNCREATE(class_name, base_class_name) \
	CObject* PASCAL class_name::CreateObject() \
		{ return new class_name; } \
	IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, 0xFFFF, \
		class_name::CreateObject) 

| |
Автор Каев Артем.
[AD]