描述:
我采用.NET的VC编写了一个ActiveX,其中定义event的如下:
[id(1), helpstring("方法DispatchStateEvent")] void DispatchStateEvent(LONG nState, BSTR szTime);
在我的程序的某个地方我采用如下方式激发事件:
FireEvent(dispidDispatchStateEvent,EVENT_PARAM(VTS_UI4 VTS_BSTR),state,wcTime);
可是我却发现,在VB程序程序中,容器响应该事件的函数却成了这个样子:
Private Sub ocxAgent_DispatchCallEvent(ByVal sender As Object, ByVal e As AxAgentOcxLib._DAgentOcxEvents_DispatchCallEventEvent) Handles ocxAgent.DispatchCallEvent
也就是说,我的VB程序没有获取到相关的nState和szTime的参数,我的VC代码中什么地方出问题了吗?能不能在VB中实现类似下面的方式:
Private Sub ocxAgent_DispatchCallEvent(byval nState as long,byval szTime as string ) Handles cxAgent.DispatchCallEvent
??
解决方案1:
在VC7里面是要自己加好多源代码的,所以我装了VC6及VC7,出错时就用VC6做,不出错就用VC7,嘿嘿!
解决方案2: 自己不用修改事件定义本身的代码, 只用ClassWizard生成一个事件,设置好属性.
然后在控件里边合适位置FireEvent1即可,不必修改_Dispatch等源码.