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