home *** CD-ROM | disk | FTP | other *** search
/ BUG 4 / BUGCD1997_05.BIN / aplic / visualj / vjtrial.exe / RCDATA / CABINET / mfcapwz.dll / TEMPLATE / DLLROOT.CPP < prev    next >
C/C++ Source or Header  |  1997-01-28  |  5KB  |  174 lines

  1. // $$root$$.cpp : Defines the initialization routines for the DLL.
  2. //
  3.  
  4. #include "stdafx.h"
  5. $$IF(EXTDLL)
  6. #include <afxdllx.h>
  7. $$ELSE // !EXTDLL
  8. #include "$$root$$.h"
  9. $$ENDIF //!EXTDLL
  10.  
  11. #ifdef _DEBUG
  12. #define new DEBUG_NEW
  13. #undef THIS_FILE
  14. static char THIS_FILE[] = __FILE__;
  15. #endif
  16.  
  17. $$IF(EXTDLL)
  18. $$ELSE
  19. //
  20. //    Note!
  21. //
  22. //        If this DLL is dynamically linked against the MFC
  23. //        DLLs, any functions exported from this DLL which
  24. //        call into MFC must have the AFX_MANAGE_STATE macro
  25. //        added at the very beginning of the function.
  26. //
  27. //        For example:
  28. //
  29. //        extern "C" BOOL PASCAL EXPORT ExportedFunction()
  30. //        {
  31. //            AFX_MANAGE_STATE(AfxGetStaticModuleState());
  32. //            // normal function body here
  33. //        }
  34. //
  35. //        It is very important that this macro appear in each
  36. //        function, prior to any calls into MFC.  This means that
  37. //        it must appear as the first statement within the 
  38. //        function, even before any object variable declarations
  39. //        as their constructors may generate calls into the MFC
  40. //        DLL.
  41. //
  42. //        Please see MFC Technical Notes 33 and 58 for additional
  43. //        details.
  44. //
  45. $$ENDIF
  46.  
  47. $$IF(EXTDLL)
  48. static AFX_EXTENSION_MODULE $$safe_root$$DLL = { NULL, NULL };
  49.  
  50. extern "C" int APIENTRY
  51. DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
  52. {
  53. $$IF(VERBOSE)
  54.     // Remove this if you use lpReserved
  55. $$ENDIF
  56.     UNREFERENCED_PARAMETER(lpReserved);
  57.  
  58.     if (dwReason == DLL_PROCESS_ATTACH)
  59.     {
  60.         TRACE0("$$ROOT$$.DLL Initializing!\n");
  61.         
  62. $$IF(VERBOSE)
  63.         // Extension DLL one-time initialization
  64. $$ENDIF
  65.         if (!AfxInitExtensionModule($$safe_root$$DLL, hInstance))
  66.             return 0;
  67.  
  68. $$IF(VERBOSE)
  69.         // Insert this DLL into the resource chain
  70.         // NOTE: If this Extension DLL is being implicitly linked to by
  71.         //  an MFC Regular DLL (such as an ActiveX Control)
  72.         //  instead of an MFC application, then you will want to
  73.         //  remove this line from DllMain and put it in a separate
  74.         //  function exported from this Extension DLL.  The Regular DLL
  75.         //  that uses this Extension DLL should then explicitly call that
  76.         //  function to initialize this Extension DLL.  Otherwise,
  77.         //  the CDynLinkLibrary object will not be attached to the
  78.         //  Regular DLL's resource chain, and serious problems will
  79.         //  result.
  80.  
  81. $$ENDIF
  82.         new CDynLinkLibrary($$safe_root$$DLL);
  83.     }
  84.     else if (dwReason == DLL_PROCESS_DETACH)
  85.     {
  86.         TRACE0("$$ROOT$$.DLL Terminating!\n");
  87. $$IF(VERBOSE)
  88.         // Terminate the library before destructors are called
  89. $$ENDIF
  90.         AfxTermExtensionModule($$safe_root$$DLL);
  91.     }
  92. $$IF(VERBOSE)
  93.     return 1;   // ok
  94. $$ELSE
  95.     return 1;
  96. $$ENDIF
  97. }
  98. $$ELSE //!EXTDLL
  99. /////////////////////////////////////////////////////////////////////////////
  100. // $$APP_CLASS$$
  101.  
  102. BEGIN_MESSAGE_MAP($$APP_CLASS$$, $$APP_BASE_CLASS$$)
  103.     //{{AFX_MSG_MAP($$APP_CLASS$$)
  104.         // NOTE - the ClassWizard will add and remove mapping macros here.
  105.         //    DO NOT EDIT what you see in these blocks of generated code!
  106.     //}}AFX_MSG_MAP
  107. END_MESSAGE_MAP()
  108.  
  109. /////////////////////////////////////////////////////////////////////////////
  110. // $$APP_CLASS$$ construction
  111.  
  112. $$APP_CLASS$$::$$APP_CLASS$$()
  113. {
  114. $$IF(VERBOSE)
  115.     // TODO: add construction code here,
  116.     // Place all significant initialization in InitInstance
  117. $$ENDIF
  118. }
  119.  
  120. /////////////////////////////////////////////////////////////////////////////
  121. // The one and only $$APP_CLASS$$ object
  122.  
  123. $$APP_CLASS$$ theApp;
  124. $$IF(AUTOMATION || SOCKETS)
  125.  
  126. /////////////////////////////////////////////////////////////////////////////
  127. // $$APP_CLASS$$ initialization
  128.  
  129. BOOL $$APP_CLASS$$::InitInstance()
  130. {
  131. $$IF(SOCKETS)
  132.     if (!AfxSocketInit())
  133.     {
  134.         AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
  135.         return FALSE;
  136.     }
  137.  
  138. $$ENDIF //SOCKETS
  139. $$IF(AUTOMATION)
  140.     // Register all OLE server (factories) as running.  This enables the
  141.     //  OLE libraries to create objects from other applications.
  142.     COleObjectFactory::RegisterAll();
  143.  
  144. $$ENDIF //AUTOMATION
  145.     return TRUE;
  146. }
  147. $$ENDIF //AUTOMATION || SOCKETS
  148. $$IF(AUTOMATION)
  149.  
  150. /////////////////////////////////////////////////////////////////////////////
  151. // Special entry points required for inproc servers
  152.  
  153. STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
  154. {
  155.     AFX_MANAGE_STATE(AfxGetStaticModuleState());
  156.     return AfxDllGetClassObject(rclsid, riid, ppv);
  157. }
  158.  
  159. STDAPI DllCanUnloadNow(void)
  160. {
  161.     AFX_MANAGE_STATE(AfxGetStaticModuleState());
  162.     return AfxDllCanUnloadNow();
  163. }
  164.  
  165. // by exporting DllRegisterServer, you can use regsvr.exe
  166. STDAPI DllRegisterServer(void)
  167. {
  168.     AFX_MANAGE_STATE(AfxGetStaticModuleState());
  169.     COleObjectFactory::UpdateRegistryAll();
  170.     return S_OK;
  171. }
  172. $$ENDIF //AUTOMATION
  173. $$ENDIF //EXTDLL
  174.