4#include "Stroika/Foundation/StroikaPreComp.h"
6DISABLE_COMPILER_MSC_WARNING_START (5054)
8DISABLE_COMPILER_MSC_WARNING_END (5054)
17#include "Stroika/Frameworks/Led/StyledTextEmbeddedObjects.h"
19#include "ActiveLedItControl.h"
21#include "UserConfigCommands.h"
23#include "ActiveLedIt.h"
25#include "ActiveLedIt_i.c"
27inline const void* LoadDLLResource (
long resID, LPCTSTR resType)
29 HRSRC hrsrc = ::FindResource (::AfxGetResourceHandle (), MAKEINTRESOURCE (resID), resType);
31 HGLOBAL hglobal = ::LoadResource (::AfxGetResourceHandle (), hrsrc);
32 const void* lockedData = ::LockResource (hglobal);
39static HRESULT CreateComponentCategory (CATID catid,
const WCHAR* catDescription)
41 ICatRegister* pcr = NULL;
44 hr = CoCreateInstance (CLSID_StdComponentCategoriesMgr, NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (
void**)&pcr);
51 catinfo.catid = catid;
52 catinfo.lcid = 0x0409;
56 size_t len = wcslen (catDescription);
59 Characters::CString::Copy (catinfo.szDescription, len, catDescription);
61 hr = pcr->RegisterCategories (1, &catinfo);
66static HRESULT RegisterCLSIDInCategory (REFCLSID clsid, CATID catid)
69 ICatRegister* pcr = NULL;
71 hr = CoCreateInstance (CLSID_StdComponentCategoriesMgr, NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (
void**)&pcr);
76 hr = pcr->RegisterClassImplCategories (clsid, 1, rgcatid);
84static HRESULT UnRegisterCLSIDInCategory (REFCLSID clsid, CATID catid)
86 ICatRegister* pcr = NULL;
89 hr = CoCreateInstance (CLSID_StdComponentCategoriesMgr, NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (
void**)&pcr);
94 hr = pcr->UnRegisterClassImplCategories (clsid, 1, rgcatid);
109 class ActiveLedItModule :
public CAtlMfcModule {
111 DECLARE_LIBID (LIBID_ACTIVELEDITLib)
113 ActiveLedItModule _AtlModule;
122ActiveLedItApp theApp;
124const GUID CDECL BASED_CODE _tlid = {0x9a013a72, 0xad34, 0x11d0, {0x8d, 0x9b, 0, 0xa0, 0xc9, 0x8, 0xc, 0x73}};
125const WORD _wVerMajor = qLed_Version_Major;
126const WORD _wVerMinor = qLed_Version_Minor;
128BOOL ActiveLedItApp::InitInstance ()
130 SetRegistryKey (_T (
"Sophist Solutions, Inc."));
132 BOOL bInit = inherited::InitInstance ();
136 StandardUnknownTypeStyleMarker::sUnknownPict = (
const Led_DIB*)::LoadDLLResource (kUnknownEmbeddingPictID, RT_BITMAP);
137 StandardMacPictureStyleMarker::sUnsupportedFormatPict = (
const Led_DIB*)::LoadDLLResource (kUnsupportedPICTFormatPictID, RT_BITMAP);
140 EmbeddedObjectCreatorRegistry::Get ().AddStandardTypes ();
145int ActiveLedItApp::ExitInstance ()
151#if qKeepListOfALInstancesForSPR_1599BWA
152 while (not ActiveLedItControl::GetAll ().empty ()) {
153 ActiveLedItControl* p = *ActiveLedItControl::GetAll ().begin ();
154 IUnknown* pi = p->GetControllingUnknown ();
155 while (pi->Release () > 0)
159 [[maybe_unused]] _AFX_THREAD_STATE* pState = AfxGetThreadState ();
160 ASSERT (pState != NULL);
161 Assert (pState->m_nCtrlRef == 0);
162 Assert (AfxGetModuleState ()->m_nObjectCount == 0);
164 return inherited::ExitInstance ();
172STDAPI DllRegisterServer ()
174 AFX_MANAGE_STATE (_afxModuleAddrThis);
176 if (!AfxOleRegisterTypeLib (AfxGetInstanceHandle (), _tlid))
177 return ResultFromScode (SELFREG_E_TYPELIB);
179 if (!COleObjectFactoryEx::UpdateRegistryAll (TRUE))
180 return ResultFromScode (SELFREG_E_CLASS);
183 HRESULT hr = CreateComponentCategory (CATID_SafeForInitializing, L
"Controls safely initializable from persistent data!");
187 hr = RegisterCLSIDInCategory (CLSID_ActiveLedIt, CATID_SafeForInitializing);
192 hr = CreateComponentCategory (CATID_SafeForScripting, L
"Controls safely scriptable!");
196 hr = RegisterCLSIDInCategory (CLSID_ActiveLedIt, CATID_SafeForScripting);
209STDAPI DllUnregisterServer ()
211 AFX_MANAGE_STATE (_afxModuleAddrThis);
214 HRESULT hr = UnRegisterCLSIDInCategory (CLSID_ActiveLedIt, CATID_SafeForInitializing);
218 hr = UnRegisterCLSIDInCategory (CLSID_ActiveLedIt, CATID_SafeForScripting);
222 if (!AfxOleUnregisterTypeLib (_tlid, _wVerMajor, _wVerMinor))
223 return ResultFromScode (SELFREG_E_TYPELIB);
225 if (!COleObjectFactoryEx::UpdateRegistryAll (FALSE))
226 return ResultFromScode (SELFREG_E_CLASS);