天天看點

activex控件 InvokeHelper

當你調用關于activex控件中的相關方法時,你要導入此控件到程式中,此時就會在工程中生成一個關于此控件調用的一個僞調用類,其中的cpp中調用每 個方法都是通過InvokeHelper調用其中的dwDispID值來定位方法的位址的!是以,可以将InvokeHelper調用了解為定位 activex控件中的相關方法的一種手段 !

invokehelper:   用于調用OLE   的IDispatch   接口方法的一個封裝方法。

CWnd::InvokeHelper

Call this member function to invoke the ActiveX Control method or property specified by dwDispID , in the context specified by wFlags .

void AFX_CDECL InvokeHelper(

   DISPID dwDispID,

   WORD wFlags,

   VARTYPE vtRet,

   void* pvRet,

   const BYTE* pbParamInfo,

   ... 

);      

Parameters

dwDispID
Identifies the method or property to be invoked.
wFlags
Flags describing the context of the call to IDispatch::Invoke . For possible wFlags values, see IDispatch::Invoke in the Platform SDK .
vtRet
Specifies the type of the return value. For possible values, see the Remarks section for COleDispatchDriver::InvokeHelper .
pvRet
Address of the variable that will that will receive the property value or return value. It must match the type specified by vtRet .
pbParamInfo
Pointer to a null-terminated string of bytes specifying the types of the parameters following pbParamInfo . For possible values, see the Remarks section for COleDispatchDriver::InvokeHelper .
...
Variable List of parameters, of types specified in pbParamInfo .

Remarks

The pbParamInfo parameter specifies the types of the parameters passed to the method or property. The variable list of arguments is represented by ... in the syntax declaration.

This function converts the parameters to VARIANTARG values, then invokes the IDispatch::Invoke method on the ActiveX control. If the call to IDispatch::Invoke fails, this function will throw an exception. If the SCODE (status code) returned by IDispatch::Invoke is DISP_E_EXCEPTION , this function throws a COleException object, otherwise it throws a COleDispatchException .

Note    This function should be called only on a CWnd object that represents an ActiveX control.

For more information about using this member function with ActiveX Control Containers, see the article ActiveX Control Containers: Programming ActiveX Controls in an ActiveX Control Container.