00001
00002
00003
00004
00005
00006
00007
00008 #include "stdafx.h"
00009 #include <initguid.h>
00010 #include "Resource.h"
00011 #include "Gme.h"
00012 #include "DecoratorConfig.h"
00013 #include "DecoratorLib.h"
00014 #include "DecoratorLib_i.c"
00015 #include "AnnotatorDecoratorImpl.h"
00016
00017
00018 CComModule _Module;
00019
00020 BEGIN_OBJECT_MAP(ObjectMap)
00021 OBJECT_ENTRY(CLSID_AnnotatorDecorator, CAnnotatorDecoratorImpl)
00022 END_OBJECT_MAP()
00023
00024 class CDecoratorApp : public CWinApp
00025 {
00026 public:
00027
00028
00029
00030
00031 public:
00032 virtual BOOL InitInstance();
00033 virtual int ExitInstance();
00034
00035
00036
00037
00038
00039
00040 DECLARE_MESSAGE_MAP()
00041 };
00042
00043 BEGIN_MESSAGE_MAP(CDecoratorApp, CWinApp)
00044
00045
00046
00047
00048 END_MESSAGE_MAP()
00049
00050 CDecoratorApp theApp;
00051
00052 BOOL CDecoratorApp::InitInstance()
00053 {
00054 #if _MSC_VER < 1700
00055
00056
00057
00058
00059 UINT uAfxSetAmbientActCtxMod = 1;
00060 HKEY hKey;
00061 if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\GME\\"),
00062 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
00063 {
00064 TCHAR szData[128];
00065 DWORD dwKeyDataType;
00066 DWORD dwDataBufSize = sizeof(szData)/sizeof(TCHAR);
00067
00068 if (RegQueryValueEx(hKey, _T("AfxSetAmbientActCtxMod"), NULL, &dwKeyDataType,
00069 (LPBYTE) &szData, &dwDataBufSize) == ERROR_SUCCESS)
00070 {
00071 uAfxSetAmbientActCtxMod = _tcstoul(szData, NULL, 10);
00072 }
00073
00074 RegCloseKey(hKey);
00075 }
00076 if (uAfxSetAmbientActCtxMod != 0)
00077 {
00078 AfxSetAmbientActCtx(FALSE);
00079 }
00080 #endif
00081
00082 _Module.Init(ObjectMap, m_hInstance, &LIBID_DecoratorLib);
00083 return CWinApp::InitInstance();
00084 }
00085
00086 int CDecoratorApp::ExitInstance()
00087 {
00088 _Module.Term();
00089 return CWinApp::ExitInstance();
00090 }
00091
00093
00094
00095 STDAPI DllCanUnloadNow(void)
00096 {
00097 AFX_MANAGE_STATE(AfxGetStaticModuleState());
00098
00099 return (AfxDllCanUnloadNow()==S_OK && _Module.GetLockCount()==0) ? S_OK : S_FALSE;
00100 }
00101
00103
00104
00105 STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
00106 {
00107 AFX_MANAGE_STATE(AfxGetStaticModuleState());
00108 return _Module.GetClassObject(rclsid, riid, ppv);
00109 }
00110
00112
00113
00114 STDAPI DllRegisterServer(void)
00115 {
00116 AFX_MANAGE_STATE(AfxGetStaticModuleState());
00117
00118 _ATL_REGMAP_ENTRY regMap[] = {
00119 {CONSTOLESTR("COCLASS_PROGID"), CONSTOLESTR(COCLASS_PROGID)},
00120 {CONSTOLESTR("COCLASS_NAME"), CONSTOLESTR(COCLASS_NAME)},
00121 {CONSTOLESTR("COCLASS_UUID"), CONSTOLESTR(COCLASS_UUID)},
00122 {CONSTOLESTR("TYPELIB_UUID"), CONSTOLESTR(TYPELIB_UUID)},
00123 {0, 0}
00124 };
00125 HRESULT hr = _Module.UpdateRegistryFromResourceD( IDR_DECORATOR, TRUE, regMap );
00126
00127
00128
00129
00130
00131
00132
00133
00134 return hr;
00135 }
00136
00138
00139
00140 STDAPI DllUnregisterServer(void)
00141 {
00142 AFX_MANAGE_STATE(AfxGetStaticModuleState());
00143
00144 _ATL_REGMAP_ENTRY regMap[] = {
00145 {CONSTOLESTR("COCLASS_PROGID"), CONSTOLESTR(COCLASS_PROGID)},
00146 {CONSTOLESTR("COCLASS_NAME"), CONSTOLESTR(COCLASS_NAME)},
00147 {CONSTOLESTR("COCLASS_UUID"), CONSTOLESTR(COCLASS_UUID)},
00148 {CONSTOLESTR("TYPELIB_UUID"), CONSTOLESTR(TYPELIB_UUID)},
00149 {0, 0}
00150 };
00151 HRESULT hr = _Module.UpdateRegistryFromResourceD( IDR_DECORATOR, FALSE, regMap );
00152
00153
00154
00155
00156
00157
00158
00159
00160 return hr;
00161 }
00162
00163