Структура AFX_EXTENSION_MODULE
Он AFX_EXTENSION_MODULE
используется во время инициализации библиотек DLL расширения MFC для хранения состояния модуля DLL расширения MFC.
Синтаксис
struct AFX_EXTENSION_MODULE
{
BOOL bInitialized;
HMODULE hModule;
HMODULE hResource;
CRuntimeClass* pFirstSharedClass;
COleObjectFactory* pFirstSharedFactory;
};
Параметры
bInitialized
ЗНАЧЕНИЕ TRUE, если модуль DLL инициализирован с AfxInitExtensionModule
помощью .
hModule
Задает дескриптор модуля DLL.
hResource
Задает дескриптор пользовательского ресурса DLL.
pFirstSharedClass
Указатель на сведения ( CRuntimeClass
структуру) о первом классе среды выполнения модуля DLL. Используется для предоставления начала списка классов среды выполнения.
pFirstSharedFactory
Указатель на первую фабрику объектов модуля DLL ( COleObjectFactory
объект). Используется для предоставления начала списка фабрики классов.
Замечания
Библиотеки DLL расширения MFC должны выполнять две задачи в их DllMain
функции:
Вызовите AfxInitExtensionModule и проверьте возвращаемое значение.
CDynLinkLibrary
Создайте объект, если библиотека DLL будет экспортировать объекты CRuntimeClass или имеет собственные пользовательские ресурсы.
Структура AFX_EXTENSION_MODULE
используется для хранения копии состояния модуля DLL расширения MFC, включая копию объектов класса среды выполнения, которые были инициализированы библиотекой DLL расширения MFC в рамках обычной конструкции статических объектов, выполняемой перед DllMain
вводом. Например:
static AFX_EXTENSION_MODULE NVC_MFC_DLLDLL;
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
// Remove this if you use lpReserved
UNREFERENCED_PARAMETER(lpReserved);
if (dwReason == DLL_PROCESS_ATTACH)
{
TRACE0("NVC_MFC_DLL.DLL Initializing!\n");
// MFC extension DLL one-time initialization
if (!AfxInitExtensionModule(NVC_MFC_DLLDLL, hInstance))
return 0;
Сведения о модуле AFX_EXTENSION_MODULE
, хранящиеся в структуре, можно скопировать в CDynLinkLibrary
объект. Например:
IMPLEMENT_DYNAMIC(CMyDynLinkLibrary, CDynLinkLibrary)
CMyDynLinkLibrary::CMyDynLinkLibrary(AFX_EXTENSION_MODULE& state, BOOL bSystem)
: CDynLinkLibrary(state, bSystem)
{
#ifndef _AFX_NO_OLE_SUPPORT
m_factoryList.Construct(offsetof(COleObjectFactory, m_pNextFactory));
#endif
m_classList.Construct(offsetof(CRuntimeClass, m_pNextClass));
// copy info from 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;
}
Требования
Заголовок: afx.h
См. также
Структуры, стили, обратные вызовы и схемы сообщений
AfxInitExtensionModule
AfxTermExtensionModule