Robert Shearman wrote:
The fix is to do the following in the conversion loop in ITypeInfo::Invoke: if (rgvt[i] == VT_VARIANT) VariantCopy(&rgvarg[i], src_arg); else if ((rgvt[i] & VT_BYREF) && !V_ISBYREF(src_arg)) ...
I don't have time to put this into patch form and test it, but hopefully someone else will.
I tried this on the test app. It did not work. Sure, the code reaches the DispCallFunc call, but then the actual code from inside the control fails the call. It seems that the type of the variant is not adequate for the parameter. Visual Basic shows a message: "Application-defined or user defined error". It seems that I will have to wait until I code enough of a test case for a *successful* ITypeInfo::Invoke() (there are two tests of failing calls, but none of a successful one), so that I can see what native OLEAUT32.DLL is sending as the parameter. Unless somebody else beats me on this.
Alex Villacís Lasso