home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / mfc / include / afxdll_.h < prev    next >
C/C++ Source or Header  |  1998-06-16  |  3KB  |  107 lines

  1. // This is a part of the Microsoft Foundation Classes C++ library.
  2. // Copyright (C) 1992-1998 Microsoft Corporation
  3. // All rights reserved.
  4. //
  5. // This source code is only intended as a supplement to the
  6. // Microsoft Foundation Classes Reference and related
  7. // electronic documentation provided with the library.
  8. // See these sources for detailed information regarding the
  9. // Microsoft Foundation Classes product.
  10.  
  11. // afxdll_.h - extensions to AFXWIN.H used for the 'AFXDLL' version
  12. // This file contains MFC library implementation details as well
  13. //   as APIs for writing MFC Extension DLLs.
  14. // Please refer to Technical Note 033 (TN033) for more details.
  15.  
  16. /////////////////////////////////////////////////////////////////////////////
  17.  
  18. #ifndef _AFXDLL
  19.     #error file must be compiled with _AFXDLL
  20. #endif
  21.  
  22. #ifdef _AFX_PACKING
  23. #pragma pack(push, _AFX_PACKING)
  24. #endif
  25.  
  26. #undef AFX_DATA
  27. #define AFX_DATA AFX_CORE_DATA
  28.  
  29. /////////////////////////////////////////////////////////////////////////////
  30.  
  31. // AFX_EXTENSION_MODULE - special struct used during DLL initialization
  32.  
  33. struct AFX_EXTENSION_MODULE
  34. {
  35.     BOOL bInitialized;
  36.     HMODULE hModule;
  37.     HMODULE hResource;
  38.     CRuntimeClass* pFirstSharedClass;
  39.     COleObjectFactory* pFirstSharedFactory;
  40. };
  41.  
  42. /////////////////////////////////////////////////////////////////////////////
  43. // CDynLinkLibrary - for implementation of MFC Extension DLLs
  44.  
  45. class COleObjectFactory;
  46.  
  47. class CDynLinkLibrary : public CCmdTarget
  48. {
  49.     DECLARE_DYNAMIC(CDynLinkLibrary)
  50. public:
  51.  
  52. // Constructor
  53.     CDynLinkLibrary(AFX_EXTENSION_MODULE& state, BOOL bSystem = FALSE);
  54.     CDynLinkLibrary(HINSTANCE hModule, HINSTANCE hResource);
  55.  
  56. // Attributes
  57.     HMODULE m_hModule;
  58.     HMODULE m_hResource;                // for shared resources
  59.     CTypedSimpleList<CRuntimeClass*> m_classList;
  60. #ifndef _AFX_NO_OLE_SUPPORT
  61.     CTypedSimpleList<COleObjectFactory*> m_factoryList;
  62. #endif
  63.     BOOL m_bSystem;                     // TRUE only for MFC DLLs
  64.  
  65. // Implementation
  66. public:
  67.     CDynLinkLibrary* m_pNextDLL;        // simple singly linked list
  68.     virtual ~CDynLinkLibrary();
  69.  
  70. #ifdef _DEBUG
  71.     virtual void AssertValid() const;
  72.     virtual void Dump(CDumpContext& dc) const;
  73. #endif //_DEBUG
  74. };
  75.  
  76. // call in every DLL_PROCESS_ATTACH
  77. BOOL AFXAPI AfxInitExtensionModule(AFX_EXTENSION_MODULE&, HMODULE hMod);
  78. // call on every DLL_PROCESS_DETACH
  79. void AFXAPI AfxTermExtensionModule(AFX_EXTENSION_MODULE&, BOOL bAll = FALSE);
  80.  
  81. // special function(s) for stand-alone DLLs (and controls)
  82. void AFXAPI AfxCoreInitModule();
  83. #if defined(_DEBUG) && !defined(_AFX_MONOLITHIC)
  84. void AFXAPI AfxOleInitModule();
  85. void AFXAPI AfxNetInitModule();
  86. void AFXAPI AfxDbInitModule();
  87. #else
  88. #define AfxOleInitModule()
  89. #define AfxNetInitModule()
  90. #define AfxDbInitModule()
  91. #endif
  92.  
  93. // special functions for loading and freeing MFC extension DLLs
  94. // (necessary if your app is multithreaded and loads extension
  95. //  DLLs dynamically)
  96. HINSTANCE AFXAPI AfxLoadLibrary(LPCTSTR lpszModuleName);
  97. BOOL AFXAPI AfxFreeLibrary(HINSTANCE hInstLib);
  98.  
  99. #undef AFX_DATA
  100. #define AFX_DATA
  101.  
  102. #ifdef _AFX_PACKING
  103. #pragma pack(pop)
  104. #endif
  105.  
  106. /////////////////////////////////////////////////////////////////////////////
  107.