Changeset 904b4dfce252…
Parent 6f32582eec57…
by
Changes to 2 files · Browse files at 904b4dfce252 Showing diff from parent 6f32582eec57 Diff from another changeset...
@@ -37,6 +37,20 @@ return CSimpleUnknown::Release(); \
}
+#define INLINE_UNKNOWN() \
+ STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR* ppv) \
+ { \
+ return CSimpleUnknown::QueryInterface(riid, ppv); \
+ } \
+ STDMETHODIMP_(ULONG) AddRef() \
+ { \
+ return CSimpleUnknown::AddRef(); \
+ } \
+ STDMETHODIMP_(ULONG) Release() \
+ { \
+ return CSimpleUnknown::Release(); \
+ }
+
#define ADDIFACE(iface) \
AddInterface(IID_##iface, (iface*)this)
|
@@ -2,12 +2,11 @@ #define _ThgClassFactory_h_
#include "ShellExt.h"
-
+#include "SimpleUnknown.h"
template <class T>
-class ThgClassFactory: public IClassFactory
+class ThgClassFactory: public CSimpleUnknown, public IClassFactory
{
- ULONG m_cRef;
const char myclassToMake;
public:
@@ -15,7 +14,7 @@ myclassToMake(classToMake)
{
CShellExt::IncDllRef();
- m_cRef = 0L;
+ ADDIFACE(IClassFactory);
}
@@ -24,41 +23,7 @@ CShellExt::DecDllRef();
}
-
- STDMETHODIMP QueryInterface(
- REFIID riid, LPVOID FAR* ppv)
- {
- if (ppv == 0)
- return E_POINTER;
-
- *ppv = NULL;
-
- if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IClassFactory))
- {
- *ppv = (LPCLASSFACTORY) this;
- AddRef();
- return S_OK;
- }
-
- return E_NOINTERFACE;
- }
-
-
- STDMETHODIMP_(ULONG) AddRef()
- {
- return ::InterlockedIncrement(&m_cRef);
- }
-
-
- STDMETHODIMP_(ULONG) Release()
- {
- if (::InterlockedDecrement(&m_cRef))
- return m_cRef;
-
- delete this;
- return 0L;
- }
-
+ INLINE_UNKNOWN()
STDMETHODIMP CreateInstance(
LPUNKNOWN pUnkOuter, REFIID riid, LPVOID* ppvObj)
|
Loading...