AFX_EXTENSION_MODULE структура

AFX_EXTENSION_MODULE структура має такий вигляд:

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

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

Члени

bInitialized

Правда , якщо модуль DLL ініціалізовано з AfxInitExtensionModule.

hModule

Визначає дескриптора модуля DLL.

hResource

Визначає ручкою модуль Користувальницькі ресурсів DLL.

pFirstSharedClass

Вказівник на інформацію ( CRuntimeClass структури) про перший клас виконавчі DLL модуля. Використовується для надання початку списку клас виконавчі файли.

pFirstSharedFactory

Вказівник на першу фабрику DLL модуля об'єкта ( COleObjectFactory об'єкт). Використовується для надання початку списку заводу клас.

Коментарі

MFC розширенням DLL потрібно зробити дві речі в їх DllMain функція:

AFX_EXTENSION_MODULE структура використовується для зберігання копії розширенням DLL модуль держави, у тому числі копію виконавчі клас об'єкти, які було ініційовано розширенням DLL як частину нормального статичний об'єкт будівництва виконані введення DllMain . Наприклад:

 статичний AFX_EXTE&NSION_MODULE extensionDLL;
зовнішній "С" 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
   НАДБАННЯ (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