HRESULT CMObject::PutPropertyByName(LPCTSTR lpsz, VARIANT* pVar) { DISPID dwDispID; if(p==NULL) return -1; HRESULT hr = GetIDOfName(lpsz, &dwDispID); if (SUCCEEDED(hr)) hr = PutProperty(p, dwDispID, pVar); return hr; }
HRESULT VerifynsXPCDispSimple(IDispatch * result) { CComVariant property; HRESULT hResult = GetProperty(result, L"Number", property); CComVariant test((long)5); if (FAILED(hResult)) return hResult; if (property != test) return E_FAIL; return PutProperty(result, L"Number", 76); }
STDMETHODIMP nsXPCDispTestMethods::IDispatchInputAndReturn(IDispatch * input, IDispatch * * result) { if (result == NULL) return E_POINTER; HRESULT hResult = VerifynsXPCDispSimple(input); hResult = XPCCreateInstance<IDispatch>(CLSID_nsXPCDispSimple, IID_IDispatch, result); if (FAILED(hResult)) return hResult; CComVariant variant; hResult = GetProperty(input, L"Number", variant); if (FAILED(hResult)) return hResult; return PutProperty(*result, L"Number", variant.lVal + 5); }
HRESULT CMObject::PutProperty(DISPID dwDispID, VARIANT* pVar) { if(p==NULL) return -1; return PutProperty(p, dwDispID, pVar); }