// This is a part of the Microsoft Foundation Classes C++ library. // Copyright (C) 1992-1998 Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // Microsoft Foundation Classes Reference and related // electronic documentation provided with the library. // See these sources for detailed information regarding the // Microsoft Foundation Classes product. // afxdll_.h - extensions to AFXWIN.H used for the 'AFXDLL' version // This file contains MFC library implementation details as well // as APIs for writing MFC Extension DLLs. // Please refer to Technical Note 033 (TN033) for more details. ///////////////////////////////////////////////////////////////////////////// #ifndef _AFXDLL #error file must be compiled with _AFXDLL #endif #ifdef _AFX_PACKING #pragma pack(push, _AFX_PACKING) #endif #undef AFX_DATA #define AFX_DATA AFX_CORE_DATA ///////////////////////////////////////////////////////////////////////////// // AFX_EXTENSION_MODULE - special struct used during DLL initialization struct AFX_EXTENSION_MODULE { BOOL bInitialized; HMODULE hModule; HMODULE hResource; CRuntimeClass* pFirstSharedClass; COleObjectFactory* pFirstSharedFactory; }; ///////////////////////////////////////////////////////////////////////////// // CDynLinkLibrary - for implementation of MFC Extension DLLs class COleObjectFactory; class CDynLinkLibrary : public CCmdTarget { DECLARE_DYNAMIC(CDynLinkLibrary) public: // Constructor CDynLinkLibrary(AFX_EXTENSION_MODULE& state, BOOL bSystem = FALSE); CDynLinkLibrary(HINSTANCE hModule, HINSTANCE hResource); // Attributes HMODULE m_hModule; HMODULE m_hResource; // for shared resources CTypedSimpleList m_classList; #ifndef _AFX_NO_OLE_SUPPORT CTypedSimpleList m_factoryList; #endif BOOL m_bSystem; // TRUE only for MFC DLLs // Implementation public: CDynLinkLibrary* m_pNextDLL; // simple singly linked list virtual ~CDynLinkLibrary(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif //_DEBUG }; // call in every DLL_PROCESS_ATTACH BOOL AFXAPI AfxInitExtensionModule(AFX_EXTENSION_MODULE&, HMODULE hMod); // call on every DLL_PROCESS_DETACH void AFXAPI AfxTermExtensionModule(AFX_EXTENSION_MODULE&, BOOL bAll = FALSE); // special function(s) for stand-alone DLLs (and controls) void AFXAPI AfxCoreInitModule(); #if defined(_DEBUG) && !defined(_AFX_MONOLITHIC) void AFXAPI AfxOleInitModule(); void AFXAPI AfxNetInitModule(); void AFXAPI AfxDbInitModule(); #else #define AfxOleInitModule() #define AfxNetInitModule() #define AfxDbInitModule() #endif // special functions for loading and freeing MFC extension DLLs // (necessary if your app is multithreaded and loads extension // DLLs dynamically) HINSTANCE AFXAPI AfxLoadLibrary(LPCTSTR lpszModuleName); BOOL AFXAPI AfxFreeLibrary(HINSTANCE hInstLib); #undef AFX_DATA #define AFX_DATA #ifdef _AFX_PACKING #pragma pack(pop) #endif /////////////////////////////////////////////////////////////////////////////