|
@@ -59,6 +59,21 @@ STDMETHODIMP_(unsigned long) PPandaObject::Release()
|
|
|
return m_refs;
|
|
return m_refs;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+STDMETHODIMP PPandaObject::QueryInterface(REFIID riid, void FAR* FAR* ppv)
|
|
|
|
|
+{
|
|
|
|
|
+ if(!IsEqualIID(riid, IID_IUnknown))
|
|
|
|
|
+ {
|
|
|
|
|
+ if(!IsEqualIID(riid, IID_IDispatch))
|
|
|
|
|
+ {
|
|
|
|
|
+ *ppv = NULL;
|
|
|
|
|
+ return E_NOINTERFACE;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ *ppv = this;
|
|
|
|
|
+ AddRef();
|
|
|
|
|
+ return NOERROR;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
STDMETHODIMP PPandaObject::GetIDsOfNames(
|
|
STDMETHODIMP PPandaObject::GetIDsOfNames(
|
|
|
REFIID riid,
|
|
REFIID riid,
|
|
|
OLECHAR FAR* FAR* rgszNames,
|
|
OLECHAR FAR* FAR* rgszNames,
|
|
@@ -139,6 +154,8 @@ STDMETHODIMP PPandaObject::Invoke(
|
|
|
unsigned int FAR* puArgErr)
|
|
unsigned int FAR* puArgErr)
|
|
|
{
|
|
{
|
|
|
UNUSED(lcid);
|
|
UNUSED(lcid);
|
|
|
|
|
+ HRESULT hr( S_OK );
|
|
|
|
|
+
|
|
|
|
|
|
|
|
if(!IsEqualIID(riid, IID_NULL))
|
|
if(!IsEqualIID(riid, IID_NULL))
|
|
|
{
|
|
{
|
|
@@ -149,8 +166,12 @@ STDMETHODIMP PPandaObject::Invoke(
|
|
|
return E_FAIL;
|
|
return E_FAIL;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ if ( dispidMember >= m_idsOfNames.size( ) )
|
|
|
|
|
+ {
|
|
|
|
|
+ return E_FAIL;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
CString& name( m_idsOfNames[dispidMember] );
|
|
CString& name( m_idsOfNames[dispidMember] );
|
|
|
- HRESULT hr( S_OK );
|
|
|
|
|
|
|
|
|
|
switch ( wFlags )
|
|
switch ( wFlags )
|
|
|
{
|
|
{
|
|
@@ -183,18 +204,3 @@ STDMETHODIMP PPandaObject::Invoke(
|
|
|
}
|
|
}
|
|
|
return hr;
|
|
return hr;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-STDMETHODIMP PPandaObject::QueryInterface(REFIID riid, void FAR* FAR* ppv)
|
|
|
|
|
-{
|
|
|
|
|
- if(!IsEqualIID(riid, IID_IUnknown))
|
|
|
|
|
- {
|
|
|
|
|
- if(!IsEqualIID(riid, IID_IDispatch))
|
|
|
|
|
- {
|
|
|
|
|
- *ppv = NULL;
|
|
|
|
|
- return E_NOINTERFACE;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- *ppv = this;
|
|
|
|
|
- AddRef();
|
|
|
|
|
- return NOERROR;
|
|
|
|
|
-}
|
|
|