PRB: Error 0x80020004 (-2147352572) When Setting a PropertyLast reviewed: October 27, 1997Article ID: Q175618 |
The information in this article applies to:
SYMPTOMSYou get the error DISP_E_PARAMNOTFOUND when you try to set a property.
CAUSEThe DISPPARAMS structure must be initialized in a special way for DISPATCH_PROPERTYPUT or DISPATCH_PROPERTYPUTREF.
RESOLUTIONWhen you use IDispatch::Invoke() with DISPATCH_PROPERTYPUT or DISPATCH_PROPERTYPUTREF, you have to specially initialize the cNamedArgs and rgdispidNamedArgs elements of your DISPPARAMS structure with the following:
DISPID dispidNamed = DISPID_PROPERTYPUT; dispparams.cNamedArgs = 1; dispparams.rgdispidNamedArgs = &dispidNamed; STATUSThis behavior is by design.
MORE INFORMATIONThis behavior is necessary because some OLE Automation servers, as a result of their language structure, cannot differentiate between a property get or put and a method call. This specially named argument case is used to determine what is actually going on.
REFERENCES"Inside OLE," Kraig Brocksmidt, Chapter 14, "The IDispatch interface" section, Microsoft Press, 1995
|
Additional query words: Visual C++ DISP_E_PARAMNOTFOUND "Parameter not
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |