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