1 // TortoiseOverlays - an overlay handler for Tortoise clients
\r
2 // Copyright (C) 2007 - TortoiseSVN
\r
4 #include "ShellExt.h"
\r
5 #include "ShellExtClassFactory.h"
\r
8 CShellExtClassFactory::CShellExtClassFactory(FileState state)
\r
10 m_StateToMake = state;
\r
17 CShellExtClassFactory::~CShellExtClassFactory()
\r
22 STDMETHODIMP CShellExtClassFactory::QueryInterface(REFIID riid,
\r
27 // Any interface on this object is the object pointer
\r
29 if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IClassFactory))
\r
31 *ppv = (LPCLASSFACTORY)this;
\r
38 return E_NOINTERFACE;
\r
41 STDMETHODIMP_(ULONG) CShellExtClassFactory::AddRef()
\r
46 STDMETHODIMP_(ULONG) CShellExtClassFactory::Release()
\r
56 STDMETHODIMP CShellExtClassFactory::CreateInstance(LPUNKNOWN pUnkOuter,
\r
62 // Shell extensions typically don't support aggregation (inheritance)
\r
65 return CLASS_E_NOAGGREGATION;
\r
67 // Create the main shell extension object. The shell will then call
\r
68 // QueryInterface with IID_IShellExtInit--this is how shell extensions are
\r
71 CShellExt* pShellExt = new CShellExt(m_StateToMake); //Create the CShellExt object
\r
73 if (NULL == pShellExt)
\r
74 return E_OUTOFMEMORY;
\r
76 return pShellExt->QueryInterface(riid, ppvObj);
\r
80 STDMETHODIMP CShellExtClassFactory::LockServer(BOOL /*fLock*/)
\r