1 #define WIN32_NO_STATUS
3 #define COM_NO_WINDOWS_H
25 #define test_S_OK(hres, message) ok(hres == S_OK, "%s (0x%lx instead of S_OK)\n",message, hResult);
26 #define test_HRES(hres, hresExpected, message) ok(hres == hresExpected, "%s (0x%lx instead of 0x%lx)\n",message, hResult,hresExpected);
28 DEFINE_GUID(CLSID_MenuDeskBar
, 0xECD4FC4F, 0x521C, 0x11D0, 0xB7, 0x92, 0x00, 0xA0, 0xC9, 0x03, 0x12, 0xE1);
29 DEFINE_GUID(CLSID_MenuBandSite
, 0xE13EF4E4, 0xD2F2, 0x11D0, 0x98, 0x16, 0x00, 0xC0, 0x4F, 0xD9, 0x19, 0x72);
31 template<typename Interface
>
32 class CUnknownBase
: public Interface
36 virtual const QITAB
* GetQITab() = 0;
44 ULONG STDMETHODCALLTYPE
AddRef ()
46 return InterlockedIncrement( &m_lRef
);
49 ULONG STDMETHODCALLTYPE
Release()
51 long newref
= InterlockedDecrement( &m_lRef
);
52 if (newref
<=0) delete this;
56 HRESULT STDMETHODCALLTYPE
QueryInterface(REFIID riid
, void** ppv
)
58 HRESULT hresult
= QISearch(this, GetQITab(), riid
, ppv
);
59 if(SUCCEEDED(hresult
)) AddRef();
63 virtual ~CUnknownBase() {}