FIX: ClassWizard Incorrectly Reads LPDISPATCH Params from .TLBLast reviewed: September 18, 1997Article ID: Q131044 |
The information in this article applies to:
SYMPTOMSClassWizard generates improper COleDispatchDriver derived member functions for methods that contain one or more LPDISPATCH* parameters. Specifically, ClassWizard generates member functions using a LPDISPATCH parameter instead of LPDISPATCH*. In other words, the asterisk (*) is missing.
RESOLUTIONTo correct this problem, you must edit the COleDispatchDriver derived member directly. For example, assume there is a type library (.TLB file) for an object that supports a method that returns a void and accepts an LPDISPATCH* as its only parameter. When ClassWizard reads the .TLB file, it generates a new class from COleDispatchDriver. The method for the member function that returns a void and accepts an LPDISPATCH* parameter ends up with this incorrect definition:
void ITestObject::TestMethod(LPDISPATCH lpDispPtr) { static BYTE BASED_CODE parms[] = VTS_DISPATCH; InvokeHelper(0x1, DISPATCH_METHOD, VT_EMPTY, NULL, parms, lpDispPtr); }To correct this problem, change the parameter type to LPDISPATCH*, and modify the parms[] array so that it contains a corresponding VTS_PDISPATCH entry instead of VTS_DISPATCH, as illustrated here:
void ITestObject::TestMethod(LPDISPATCH* lpDispPtr) { static BYTE BASED_CODE parms[] = VTS_PDISPATCH; InvokeHelper(0x1, DISPATCH_METHOD, VT_EMPTY, NULL, parms, lpDispPtr); } STATUSMicrosoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This was fixed in Visual C++ version 5.0.
Keywords : vcfixlist500 WizardIss kbbuglist kbfixlist Technology : kbMfc kbole Version : 1.50 1.51 1.52 2.00 2.10 Platform : NT WINDOWS Issue type : kbbug Solution Type : kbfix |
================================================================================
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |