AFX_EXTENSION_MODULE структура

AFX_EXTENSION_MODULE структура имеет следующую форму:

структура AFX_EXTE&NSION_MODULE
{
 nbsp; BOOL bInitialized;
   HMODULE hModule;
   HMODULE hResource;
   CRuntimeClass * pFirstSharedClass;
   COleObjectFactory * pFirstSharedFactory;
}

AFX_EXTENSION_MODULE используется во время инициализации библиотеки DLL расширения MFC для хранения состояния модуля DLL расширения.

Члены

bInitialized

Значение TRUE , если модуль DLL был инициализирован с AfxInitExtensionModule.

hModule

Определяет дескриптор DLL-модуля.

hResource

Определяет дескриптор DLL модуль пользовательских ресурсов.

pFirstSharedClass

Указатель информации (структура CRuntimeClass ) о DLL-модуля первого класса общеязыковой среды выполнения. Используется для обеспечения начала списка класса времени выполнения.

pFirstSharedFactory

Указатель на первый объект завод DLL-модуля (объекты COleObjectFactory ). Используется для обеспечения начала списка класса фабрики.

Комментарии

Нужно сделать две вещи в их функции DllMain библиотеки DLL расширения MFC:

Структура AFX_EXTENSION_MODULE используется для хранения копии расширения DLL модуля государства, включая копии объектов класса времени выполнения, которые были инициализированы DLL расширения в рамках обычных статический объект строительства казнены до ввода DllMain . Например:

 статический AFX_EXTE&NSION_MODULE extensionDLL;
extern «C» int APIENTRY
DllMain (HINSTANCE hInstance, DWORD dwReason, LPVOID)
{
 nbsp; / / инициализировать этот DLL модуль расширения
   Проверка (AfxInitExtensionModule (extensionDLL, hInstance))

Модуль информации, хранящейся в AFX_EXTENSION_MODULE структуре могут быть скопированы в объект CDynLinkLibrary . Например:

/ / CDynLinkLibrary класс
IMPLEMENT_DYN&AMIC (CDynLinkLibrary, CCmdTarget)
/ / Конструктор
CDynLinkLibrary::CDynLinkLibrary (AFX_EXTENSION_MODULEamp; государства, BOOL bSystem)
{
# ifndef _AFX_NO_OLE_SUPPORT
   m_factoryList.Construct (offsetof (COleObjectFactory, m_pNextFactory));
# endif
   m_classList.Construct (offsetof (CRuntimeClass, m_pNextClass));

/ / копирование информации с AFX_EXTENSION_MODULE struct
   ASSERT (state.hModule! = NULL);
   m_hModule = state.hModule;
   m_hResource = state.hResource;
   m_classList.m_pHead = state.pFirstSharedClass;
# ifndef _AFX_NO_OLE_SUPPORT
   m_factoryList.m_pHead = state.pFirstSharedFactory;
# endif
   m_bSystem = bSystem

См. также AfxInitExtensionModule, AfxTermExtensionModule

Index