home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / vile-src.zip / vile-8.1 / visvile / visvile.cpp < prev    next >
C/C++ Source or Header  |  1998-08-25  |  4KB  |  148 lines

  1. // VisVile.cpp : Defines the initialization routines for the DLL.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <initguid.h>
  6. #include "VisVile.h"
  7. #include "DSAddIn.h"
  8. #include "Commands.h"
  9.  
  10.  
  11. #ifdef _DEBUG
  12. #define new DEBUG_NEW
  13. #undef THIS_FILE
  14. static char THIS_FILE[] = __FILE__;
  15. #endif
  16.  
  17. CComModule _Module;
  18.  
  19. BEGIN_OBJECT_MAP(ObjectMap)
  20.     OBJECT_ENTRY(CLSID_DSAddIn, CDSAddIn)
  21. END_OBJECT_MAP()
  22.  
  23. /////////////////////////////////////////////////////////////////////////////
  24. // CVisVileApp
  25.  
  26. class CVisVileApp : public CWinApp
  27. {
  28. public:
  29.     CVisVileApp();
  30.  
  31. // Overrides
  32.     // ClassWizard generated virtual function overrides
  33.     //{{AFX_VIRTUAL(CVisVileApp)
  34.     public:
  35.     virtual BOOL InitInstance();
  36.     virtual int ExitInstance();
  37.     //}}AFX_VIRTUAL
  38.  
  39.     //{{AFX_MSG(CVisVileApp)
  40.         // NOTE - the ClassWizard will add and remove member functions here.
  41.         //    DO NOT EDIT what you see in these blocks of generated code !
  42.     //}}AFX_MSG
  43.     DECLARE_MESSAGE_MAP()
  44. };
  45.  
  46.  
  47. /////////////////////////////////////////////////////////////////////////////
  48. // CVisVileApp
  49.  
  50. BEGIN_MESSAGE_MAP(CVisVileApp, CWinApp)
  51.     //{{AFX_MSG_MAP(CVisVileApp)
  52.         // NOTE - the ClassWizard will add and remove mapping macros here.
  53.         //    DO NOT EDIT what you see in these blocks of generated code!
  54.     //}}AFX_MSG_MAP
  55. END_MESSAGE_MAP()
  56.  
  57. /////////////////////////////////////////////////////////////////////////////
  58. // The one and only CVisVileApp object
  59.  
  60. CVisVileApp theApp;
  61.  
  62. /////////////////////////////////////////////////////////////////////////////
  63. // CVisVileApp construction
  64.  
  65. CVisVileApp::CVisVileApp()
  66. {
  67. }
  68.  
  69. /////////////////////////////////////////////////////////////////////////////
  70. // CVisVileApp initialization
  71.  
  72. BOOL CVisVileApp::InitInstance()
  73. {
  74.     _Module.Init(ObjectMap, m_hInstance);
  75.     return CWinApp::InitInstance();
  76. }
  77.  
  78. int CVisVileApp::ExitInstance()
  79. {
  80.     _Module.Term();
  81.     return CWinApp::ExitInstance();
  82. }
  83.  
  84. /////////////////////////////////////////////////////////////////////////////
  85. // Special entry points required for inproc servers
  86.  
  87. STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
  88. {
  89.     AFX_MANAGE_STATE(AfxGetStaticModuleState());
  90.     return _Module.GetClassObject(rclsid, riid, ppv);
  91. }
  92.  
  93. STDAPI DllCanUnloadNow(void)
  94. {
  95.     AFX_MANAGE_STATE(AfxGetStaticModuleState());
  96.     return (AfxDllCanUnloadNow()==S_OK && _Module.GetLockCount()==0) ? S_OK : S_FALSE;
  97. }
  98.  
  99. // by exporting DllRegisterServer, you can use regsvr32.exe
  100. STDAPI DllRegisterServer(void)
  101. {
  102.     AFX_MANAGE_STATE(AfxGetStaticModuleState());
  103.     HRESULT hRes = S_OK;
  104.     
  105.     // Registers object, typelib and all interfaces in typelib
  106.     hRes = _Module.RegisterServer(TRUE);
  107.     if (FAILED(hRes))
  108.         return hRes;
  109.  
  110.     // Register description of this add-in object in its own
  111.     //  "/Description" subkey.
  112.     _ATL_OBJMAP_ENTRY* pEntry = _Module.m_pObjMap;
  113.     CRegKey key;
  114.     LONG lRes = key.Open(HKEY_CLASSES_ROOT, _T("CLSID"));
  115.     if (lRes == ERROR_SUCCESS)
  116.     {
  117.         USES_CONVERSION;
  118.         LPOLESTR lpOleStr;
  119.         StringFromCLSID(*pEntry->pclsid, &lpOleStr);
  120.         LPTSTR lpsz = OLE2T(lpOleStr);
  121.  
  122.         lRes = key.Open(key, lpsz);
  123.         if (lRes == ERROR_SUCCESS)
  124.         {
  125.             CString strDescription;
  126.             strDescription.LoadString(IDS_VISVILE_DESCRIPTION);
  127.             key.SetKeyValue(_T("Description"), strDescription);
  128.         }
  129.         CoTaskMemFree(lpOleStr);
  130.     }
  131.     if (lRes != ERROR_SUCCESS)
  132.         hRes = HRESULT_FROM_WIN32(lRes);
  133.  
  134.     return hRes;
  135. }
  136.  
  137. /////////////////////////////////////////////////////////////////////////////
  138. // DllUnregisterServer - Removes entries from the system registry
  139.  
  140. STDAPI DllUnregisterServer(void)
  141. {
  142.     AFX_MANAGE_STATE(AfxGetStaticModuleState());
  143.  
  144.     HRESULT hRes = S_OK;
  145.     _Module.UnregisterServer();
  146.     return hRes;
  147. }
  148.