AFX_EXTENSION_MODULE 구조는 다음과 같은 형태:
aFX_EXTENSION_MODULE 구조체
{
nbsp; BOOL bInitialized;
? HMODULE hModule;
? HMODULE hResource;
? CRuntimeClass * pFirstSharedClass;
? COleObjectFactory * pFirstSharedFactory;
}(&N)
확장 DLL 모듈의 상태를 MFC 확장 Dll 초기화 하는 동안 사용 되는 AFX_EXTENSION_MODULE。
회원
bInitialized
TRUE 이면 AfxInitExtensionModule DLL 모듈 초기화 된。
hModule
DLL 모듈의 핸들을 지정합니다.
hResource
사용자 지정 리소스 DLL 모듈의 핸들을 지정합니다.
pFirstSharedClass
DLL 모듈의 첫 번째 런타임 클래스 ( CRuntimeClass 구조체) 정보에 대 한 포인터입니다. 런타임 클래스 목록의 시작을 제공 하는 데 사용。
pFirstSharedFactory
DLL 모듈의 첫 번째 개체 팩터리 ( COleObjectFactory 개체)에 대 한 포인터입니다. 클래스 팩터리 목록의 시작을 제공 하는 데 사용。
코멘트
MFC 확장 Dll의 DllMain 함수에서 두 가지를 할 필요가:
AFX_EXTENSION_MODULE 구조는 DllMain 을 입력 하기 전에 실행 하는 일반적인 정적 개체 생성의 일부로 확장 DLL에 의해 초기화 된 런타임 클래스 개체의 복사본을 포함 하는 DLL 모듈 상태 확장의 복사본을 저장 하는 데 사용 됩니다. 예를 들어:
정적 AFX_EXTENSION_MODULE extensionDLL;
extern "C" int APIENTRY
DllMain (HINSTANCE hInstance, DWORD dwReason, LPVOID)
{
nbsp; / /이 DLL 확장 모듈 초기화
? 확인 (AfxInitExtensionModule (extensionDLL, hInstance))(&N)
AFX_EXTENSION_MODULE 구조에 저장 된 모듈 정보 CDynLinkLibrary 개체에 복사할 수 있습니다. 예를 들어:
/ / CDynLinkLibrary 클래스
IMPLEMENT_DYNAMIC (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 구조체에서 정보 복사
? 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(&A)
참고 항목nbsp;AfxInitExtensionModule, AfxTermExtensionModule(&N)