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

  1. // RegObj.h : Declaration of the CRegObject
  2.  
  3. /////////////////////////////////////////////////////////////////////////////
  4. // register
  5.  
  6. class ATL_NO_VTABLE CDLLRegObject : public CRegObject, public CComObjectRoot,
  7.                       public CComCoClass<CDLLRegObject, &CLSID_Registrar>
  8. {
  9. public:
  10.     CDLLRegObject() {}
  11.     ~CDLLRegObject(){CRegObject::ClearReplacements();}
  12.  
  13. BEGIN_COM_MAP(CDLLRegObject)
  14.     COM_INTERFACE_ENTRY(IRegistrar)
  15. END_COM_MAP()
  16.  
  17. DECLARE_NOT_AGGREGATABLE(CDLLRegObject)
  18.     HRESULT FinalConstruct()
  19.     {
  20.         return CComObjectRoot::FinalConstruct();
  21.     }
  22.     void FinalRelease()
  23.     {
  24.         CComObjectRoot::FinalRelease();
  25.     }
  26. //we can't use the component because that's what we're registering
  27. //we don't want to do the static registry because we'd have extra code
  28.     static HRESULT WINAPI UpdateRegistry(BOOL bRegister)
  29.     {
  30.         CComObject<CDLLRegObject>* p;
  31.         CComObject<CDLLRegObject>::CreateInstance(&p);
  32.         CComPtr<IRegistrar> pR;
  33.         p->QueryInterface(IID_IRegistrar, (void**)&pR);
  34.         return AtlModuleUpdateRegistryFromResourceD(&_Module,
  35.             (LPCOLESTR)MAKEINTRESOURCE(IDR_Registrar), bRegister, NULL, pR);
  36.     }
  37. };
  38.