Type | Description | |||
item as Variant | A variant expression that indicates a argument's index or an argument's name. | |||
OleEventParam | An OleEventParam object that contains the name and the value for the argument. |
The following VB sample prints the events that an inside ActiveX control fires:
Private Sub ExMenu1_OleEvent(ByVal ID As Long, ByVal Ev As EXMENULibCtl.IOleEvent) With ExMenu1.Item(ID) Debug.Print (.Caption) End With With Ev Debug.Print .Name Dim i As Long For i = 0 To .CountParam - 1 With .Param(i) Debug.Print .Name & " = " & .Value End With Next End With End Sub
The following C++ sample prints the events that an inside ActiveX control fires:
#import <exmenu.dll> void OnOleEventExmenu1(long ID, LPDISPATCH Ev) { EXMENULib::IOleEventPtr spEvent( Ev ); OutputDebugString( spEvent->GetName() ); for ( long i = 0; i < spEvent->CountParam; i++ ) { EXMENULib::IOleEventParamPtr spParam = NULL; spEvent->get_Param( COleVariant( i ), &spParam ); CString strOutput; strOutput.Format( "%s = %s", spParam->Name.operator const char *(), V2S( &spParam->Value ) ); OutputDebugString( strOutput ); } }
The C++ sample requires #import <exmenu.dll> to import definitions for OleEvent and OleEvenParam objects. It generates the EXMENULib namespace that includes all objects for the ExMenu component.
The V2S function converts a VARIANT value to a string expression:
static CString V2S( VARIANT* pv, LPCTSTR szDefault = _T("") ) { if ( pv ) { if ( pv->vt == VT_ERROR ) return szDefault; COleVariant vt; vt.ChangeType( VT_BSTR, pv ); return V_BSTR( &vt ); } return szDefault; }
The following VB.NET sample prints the events that an inside ActiveX control fires:
Private Sub AxExMenu1_OleEvent(ByVal sender As Object, ByVal e As AxEXMENULib._IMenuEvents_OleEventEvent) Handles AxExMenu1.OleEvent With AxExMenu1.item(e.iD) Debug.Print(.Caption) End With With e.ev Debug.WriteLine(.Name()) Dim i As Integer For i = 0 To .CountParam - 1 With .Param(i) Debug.WriteLine(.Name + " = " + .Value.ToString()) End With Next End With End Sub
The following C# sample prints the events that an inside ActiveX control fires:
private void axExMenu1_OleEvent(object sender, AxEXMENULib._IMenuEvents_OleEventEvent e) { System.Diagnostics.Debug.WriteLine(axExMenu1[e.iD].Caption); System.Diagnostics.Debug.WriteLine(e.ev.Name); for (int i = 0; i < e.ev.CountParam; i++) { EXMENULib.OleEventParam param = e.ev[i]; System.Diagnostics.Debug.WriteLine( param.Name + " = " + param.Value.ToString()); } }
The following VFP sample prints the events that an inside ActiveX control fires:
*** ActiveX Control Event *** LPARAMETERS id, ev With thisform.ExMenu1.Item(ID) wait window nowait (.Caption) EndWith With Ev wait window nowait .Name local i For i = 0 To .CountParam - 1 With .Param(i) wait window nowait .Name && + " = " + Str(.Value) EndWith Next EndWith